Ich verwende CentOS 6.0 und versuche, mod_rewrite dazu zu bringen, das „www“ aus allen URLs zu entfernen, die mit diesem Präfix beginnen. Hier ist der Code, den ich in meiner httpd.conf habe:
NOTIZ:Ich verwende einen VPS mit vollem Root-Zugriff, daher verwende ich keine .htaccess-Dateien oder „Verzeichnis-spezifische“ Einstellungen.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule ^(.*)$ http://aaronjwood.com/$1 [R=301,L]
Dies funktioniert für alle Seiten einwandfrei, außer dass die URL geschrieben wird anhttp://aaronjwood.com//(beachten Sie die beiden Schrägstriche) oderhttp://aaronjwood.com//contact.php. Kann mir jemand helfen herauszufinden, warum das passiert?
Antwort1
Da es sich in Ihrer Hauptkonfigurationsdatei befindet und nicht in einem Verzeichnis ( <Directory>
oder .htaccess
), wird der führende Schrägstrich nicht aus Kontextgründen entfernt. Es fügt tatsächlich bei jeder Neuschreibung den zweiten Schrägstrich hinzu (oder versucht hinzuzufügen – ich bin mir nicht sicher, ob Apache den zusätzlichen Schrägstrich in den meisten Fällen entfernt oder ob der Client-Browser dies tut).
Berücksichtigen Sie einfach die Tatsache, dass der führende Schrägstrich in der Zeichenfolge enthalten ist, die Sie abgleichen:
RewriteRule ^/(.*)$ http://aaronjwood.com/$1 [R=301,L]
Antwort2
Da es sich direkt in einem virtuellen Host befindet, hier die Lösung: Entfernen Sie hier den Schrägstrich:http://aaronjwood.com$1
Noch ein Tipp: Wenn Sie alleine sind, ^(.*)$
ist das Gleiche wie (.*)
.
Hier ist die Lösung:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule (.*) http://aaronjwood.com$1 [R=301,L]
Bitte sagen Sie mir, ob es geklappt hat.
Olivier