Zur Navigation

mehrere mod_rewrite Regeln auf Einmal

www-Version + index-files entfernen + trailing Slash

1 Christian (Gast)

Hallo,

ich habe eine Joomla Installation (v. 1.5.15) und versuche mich gerade schon krampfhaft an der .htaccess um folgende Dinge zu realisieren:

- von non-www auf www Version umleiten
- index-Files (php oder html) "entfernen" (Parameter aber behalten)
- trailing Slash bei allen URLs anfügen (wo nötig)

Nur irgendwie will das alles zusammen nicht so recht klappen. Hat irgendwie eine Idee für "einen" passenden Code für meine .htaccess?
Im Netz findet man immer irgendwie nur Snippets für die einzelnen Teile:

trainling slash: http://enarion.net/web/apache/htaccess/trailing-slash/

Eigentlich sollte auch eine Umleitung des 404er Errors auf die Startseite mit in die .htaccess rein, aber Joomla ruft intern immer eine error.php auf, sodass ich dort eine entsprechende header-Weiterleitung auf die Startseite eingerichtet habe.

Interessant klingt bzgl. der obigen drei Punkte das hier: http://leevigraham.com/cms-customisation/expressionengine/lg-htaccess-generator/

Danke und Grüße,
Christian

11.08.2010 15:24

2 Jörg

- index-Files (php oder html) "entfernen" (Parameter aber behalten)

Parameter, die über POST übertragen werden, gehen bei einer Weiterleitung zwangsläufig verloren

- trailing Slash bei allen URLs anfügen (wo nötig)

Definiere "wo nötig"; an example.com/robots.txt willst du vermutlich keinen Slash anfügen - deswegen muss ein Muster der betreffenden URLs definiert werden

Nur irgendwie will das alles zusammen nicht so recht klappen.

Ja - da muss man u.a. auch eine geeignete Reihenfolge finden. Zuallererst wäre es hierzu wichtig zu wissen, wie der derzeitige Inhalt der .htaccess Datei aussieht

Eigentlich sollte auch eine Umleitung des 404er Errors auf die Startseite mit in die .htaccess rein, aber Joomla ruft intern immer eine error.php auf, sodass ich dort eine entsprechende header-Weiterleitung auf die Startseite eingerichtet habe.

Warum willst du denn bei einem Fehler 404 weiterleiten? ich halte das weder für nutzer- noch für suchmaschinenfreundlich

11.08.2010 16:47

3 Christian (Gast)

Hallo Jörg,

danke für deine Antwort.

Momentan habe ich das hier in der .htaccess:

ErrorDocument 404 http://www.domain.de/

##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks
#  mod_rewrite in use
RewriteEngine On

#index entfernen
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
RewriteRule ^index\.(html?|php)$ http://www.domain.de/ [R=301,L] 

# non-www to www
RewriteCond %{HTTP_HOST} !^www.domain.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]

# trailing slash
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.de/$1/ [L,R=301]

Die Umleitung auf www funktioniert, genau wie das mit dem trailing-slash (keine Ahnung, ob das sinnvoll ist oder nicht :-)). Einziges Problem ist, dass Sachen wie

http://www.domain.de/index.php?parameter=1

nicht auf

http://www.domain.de/?parameter=1

geändert werden :-( Zudem scheint das mit der index.php entfernen wohl nur mit dem root zu funktionieren, also bei Unterverzeichnissen wie http://www.domain.de/verzeichnis/index.php wird das index.php nicht entfernt...

Bzgl. der 404er Umleitung: Sinn ist hier, dass von außen gesetzte Links nicht auf der nutzlosen 404-Seite landen, sondern per 301 schön auf die Startseite geleitet werden. Klar könnte man auf der 404er Seite auch eine Sitemap oder sonstwas setzen, aber ich möchte halt auf die Startseite den Linkjuice weitergeben ;-)

Danke und Grüße,
Christian

11.08.2010 17:18

4 Jörg

Einziges Problem ist, dass Sachen wie

http://www.domain.de/index.php?parameter=1

nicht auf

http://www.domain.de/?parameter=1

geändert werden :-(

D.h. der Parameter geht verloren, ansonsten funktioniert die Weiterleitung? Eigentlich sollte ein Parameter automatisch wieder hinten dran gehängt werden

Zudem scheint das mit der index.php entfernen wohl nur mit dem root zu funktionieren, also bei Unterverzeichnissen wie http://www.domain.de/verzeichnis/index.php wird das index.php nicht entfernt...

Ja, dazu muss das Muster vorne "geöffnet" werden und das Verzeichnis in Klammern gespeichert werden, damit man es im Weiterleitungsziel (als "$1") wieder aufgreifen kann; also so in etwa:

#index entfernen
RewriteCond %{THE_REQUEST} /index\.(html?|php)\ HTTP/
RewriteRule ^(.+/)?index\.(html?|php)$ http://www.domain.de/$1 [R=301,L] 

Bzgl. der 404er Umleitung: Sinn ist hier, dass von außen gesetzte Links nicht auf der nutzlosen 404-Seite landen, sondern per 301 schön auf die Startseite geleitet werden. Klar könnte man auf der 404er Seite auch eine Sitemap oder sonstwas setzen, aber ich möchte halt auf die Startseite den Linkjuice weitergeben ;-)

301 anstelle von 404 hört sich schon besser an, als einen 404er weiterzuleiten (ist aber auch nicht unbedingt nutzerfreundlich). Gibt Joomla denn den Status Code 404 aus? ein anschließender 301 würde dann vermutlich keinen großen Sinn mehr machen.

11.08.2010 23:32 | geändert: 11.08.2010 23:33

Beitrag schreiben (als Gast)





[BBCode-Hilfe]