/ Administration

Fallback für UI-Router HTML5mode

Vor wenigen Wochen habe ich meinen Webauftritt erneuert. Für die letzten 6 Monate war der Blog gleichzeitig meine Homepage und deshalb leider nicht optimal, um mich selbst perfekt in Szene zu setzen.

Die neue Homepage ist eine Single Page App, der mittels jQuery und AngularJs ein bisschen Dynamik beigebracht wurde. Ich verwende dafür das Routing Modul UI-Router mit HTML5 Mode, sprich bei allen Anfragen an http://www.plechinger.at/(.*) wird (.*) an das Angular Routing Modul weiter gegeben.

Das Problem dabei ist, dass es immer noch die alten Blogposts gibt, die jetzt aber unter http://blog.plechinger.at zu finden sind. Es muss also eine HTTP 301 - Moved permanently Umleitung her.

Anfragen Umleiten

Da ich für die korrekte Funktionsweise des HTML5-Modes sowieso schon die Apache Rewrite Engine verwende, musste ich sie nur mehr um folgende Regel ergänzen:

Alle Anfragen, die auf keine meiner Routen der Homepage zutreffen, werden zu blog.plechinger.at umgeleitet.

Von dem UI-Router HTML5mode Tutorial habe ich folgenden Inhalt meiner .htaccess - Datei:

<IfModule mod_rewrite.c>
    RewriteEngine on

    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.php [L]
</IfModule>

Diese muss ich jetzt durch meine Regel erweitern:

<IfModule mod_rewrite.c>
    RewriteEngine on

    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    #Erweiterung
    RewriteCond %{REQUEST_URI} !/(about|skills|portfolio(/.*)?|blog)/?$
    RewriteRule ^(.*)$ http://blog.plechinger.at/$1 [R=301,L]
        
    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.php [L]
</IfModule>

Möchte ich in Zukunft eine weitere URL auf meiner Hauptseite haben, kann ich die RewriteCond einfach mit |irgendwas erweitern, um beim Aufruf von /irgendwas keine Umleitung zu bekommen.