- Code: Select all
# MAIN SETTINGS
Options +FollowSymLinks +SymLinksIfOwnerMatch -ExecCGI -Includes -Indexes -MultiViews
# REWRITES #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteCond %{REQUEST_URI} !^/sitemap\.xml$
RewriteCond %{REQUEST_URI} !^/favicon\.ico$
RewriteCond %{HTTP_HOST} ^beispiel\.de$ [NC]
RewriteRule ^(.*)$ http://www.beispiel.de/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)\.beispiel\.de$ [NC]
RewriteRule ^(.*)$ http://%1.beispiel.de/$1 [R=301,L]
</IfModule>
Die rewrite rules (www für Domains resp. non-www für Subdomains) zur Vermeidung von Duplicate Content funktionieren soweit einwandfrei - wenn da die doofen Trailing Slashes nicht wären...
Das Problem: Aktuell werden "beispiel.de" und "beispiel.de/" wie gewollt via 301 auf "www.beispiel.de/" umgeleitet. Beim Aufruf von "www.beispiel.de" erhalte ich jedoch eine "200 Status OK"-Meldung, was - wenn ich richtig verstanden habe - Google überhaupt nicht gern hat. Genauso verhält es sich bei Subdomains, "subdomain.beispiel.de" wird nicht umgelenkt.
Mit folgender Regel habe ich versucht hier ebenfalls einen Trailing Slash zu erzwingen:
- Code: Select all
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]
Dies führt jedoch dazu, dass nunmehr auf "www.beispiel.de/index.htm/" umgeleitet wird. Stelle ich hier zusätzlich
- Code: Select all
RewriteCond %{REQUEST_FILENAME} !index.htm
voran, wird das Umleitungsziel wieder korrekt angesteuert, aber ich erhalte eben auch wieder die 200er...
Gibt es hier eine verträgliche Lösung? Und: Wie muss ich verfahren, damit auch alle Unterordner zwingend mit einem Trailing Slash versehen werden?
Besten Dank im Voraus!
mcman