
Ich drehe hier durch. Apache ignoriert sowohl als RewriteCond
auch vollständig RewriteRule
. Ich würde erwarten, dass dies einen Fehler ausgibt, da RewriteEngine nicht auf eingestellt wurde On
. Ich hatte eine Reihe anderer RewriteCond
und RewriteRule
Zeilen, die einwandfrei funktionierten, und als ich das Rewrite-Protokoll überprüfte (das ich aktiviert hatte), zeigte es, dass diese beiden übersprungen wurden. Ich habe alles andere gekürzt, um sicherzustellen, dass nichts davon das Problem verursachte, und tatsächlich fährt Apache mit dieser Konfiguration ohne Fehler fort:
DocumentRoot /var/sites/public
<Directory /var/sites/public>
AllowOverride None
SetEnv APPLICATION_ENV production
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.example.com/$1 [L,R]
Order allow,deny
allow from all
</Directory>
Ich bin ziemlich sicher, dass hier ein eklatanter Fehler vorliegt, den ich durch zu langes Anstarren übersehen habe. Für jede Hilfe wäre ich dankbar.
Hinweise: Ich habe dies nicht in einem Vhost. In der Konfiguration sind keine Vhosts vorhanden. Ich habe RewriteCond entfernt und es werden immer noch keine Fehler ausgegeben. Ich habe dies auch mit eingeschalteter RewriteEngine versucht.
Antwort1
Ein kurzer Blick darauf genügt, um mir zu sagen, dass die RewriteCond mit nichts übereinstimmt, außer scheinbar mit nichts. Ich bin mir nicht sicher, wie mod_rewrite dazu steht.
Was genau möchten Sie mit der Regel erreichen?
Wenn Sie beispielsweise möchten, dass es mit jeder Domäne außer (www.)example.com übereinstimmt und an www.example.com weitergeleitet wird, dann hätten Sie eine Regel wie die:
RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]
Antwort2
Das möchten Sie auch:
RewriteCond %{HTTP_HOST} .
...oder anders geschrieben:
RewriteCond %{HTTP_HOST}!=""
Also:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]