Wir betreiben Apache-Server unter Linux.301 Redirect funktioniert nicht auf neuem Server
Im <VirtualHost>
der Apache Config-Datei (in /etc/apach2/sites/site.conf
), haben wir die folgende Rewrite-Regel:
Der Zweck dieser Regel ist, so dass, wenn jemand die Website zugreift (die mit mehreren Domänen zugegriffen werden kann) Versuche, ohne www.
vor zu gelangen, wird 301 umleiten auf www.
. Wenn ein Benutzer beispielsweise zur Site http://example.com
wechselt, wird die Regel 301 an http://www.example.com
umleiten.
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Wir haben diese gleiche Regel Setup auf anderen Servern und arbeiten gut, aber aus irgendeinem Grund bekommen wir können einfach nicht auf diesem neuen Server arbeiten. Das Neustarten von Apache ist in Ordnung usw. Aber wenn wir auf die Seite mit example.com
zugreifen, wird es nicht auf www.example.com
umgeleitet.
Irgendwelche Vorschläge oder frühere Erfahrungen, die einige Hinweise geben können, verursachen?
=========
Hier ist eine erweiterte Version des Config für Kontext.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
RewriteEngine on
# force www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# Bypass images, css, javascript and docs, add your own extensions if needed.
RewriteCond %{REQUEST_URI} \.(bmp|gif|jpe?g|png|css|js|txt|pdf|doc|xls|ico)$
RewriteRule ^(.*)$ - [NC,L]
# The ColdBox index.cfm/{path_info} rules.
RewriteRule ^$ index.cfm [QSA,NS]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.cfm/%{REQUEST_URI} [QSA,L,NS]
</Directory>
Ist mod_rewrite aktiviert? Nur zur Verdeutlichung, ist diese Direktive direkt in der Serverkonfiguration (oder dem virtuellen Hostkontext) - was Sie zu implizieren scheinen? Wenn es dann ist, ist diese Direktive nicht genau richtig. – MrWhite
Hallo w3dk, ja, mod_rewrite ist aktiviert (andere neu definierte Schreibweisen funktionieren einwandfrei). Die Anweisung befindet sich im virtuellen Host> Verzeichniskontext. ... –
Jason
Sind die anderen Umschreibungen (die funktionieren) im selben Verzeichniskontext? 'FollowSymLinks' muss in einem Verzeichniskontext gesetzt werden.In Ihrer Regex ist der Bindestrich nicht enthalten. Daher enthalten Ihre Domainnamen vermutlich keinen Bindestrich? Welche Version von Apache? Hast du _debugging_ aktiviert? Überprüfen Sie den Wert von 'HTTP_HOST' (z. B. einer Umgebungsvariablen zuweisen und Ihren Code einchecken). – MrWhite