Ich bin mit .htaccess-Dateien nicht sehr vertraut, und ich versuche, eine Subdomain auszuschließen (etwas wie dev.example.com)
von der folgenden Rewrite-Regel, die bereits vorhanden ist:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Diese Regel verhindert, dass jemand einfach reinkommt example.com
oder http://example.com
und erzwingt die gewünschte Darstellung der URL, http://www.example.com
.
Ich habe einige Optionen zum Ausschluss einer Subdomain ausprobiertvon dieser Umschreiberegel, aber ohne Erfolg. Jedes der Verzeichnisse auf der Site hat seine eigene .htaccess-Datei, aber anscheinend hat diese immer noch Vorrang. Irgendwelche Ideen? Vielen Dank!
Antworten:
13 für die Antwort № 1Die vorhandene Regel schließt bereits eine Subdomain aus. Sie müssen nur eine neue Bedingung hinzufügen:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Sie können auch reguläre Ausdrücke loswerden:
RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com [NC]
RewriteCond %{HTTP_HOST} !=dev.example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Die Syntax finden Sie unter http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewritecond
2 für die Antwort № 2
Ich bin mir nicht sicher, ob dies für Sie passen könnte, aber es ist eine gute Übung, die Apache virtualhosts-Konfiguration zu verwenden .htaccess
Dateien. In diesem Fall benutze ich für das nicht www -> www redirect normalerweise etwas wie:
<VirtualHost *:80>
ServerName example.com
RedirectMatch permanent ^(.*) http://www.example.com$1
</VirtualHost>
Das ist im Allgemeinen sicherer als a mod_rewrite
Regel.
2 für die Antwort № 3
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(dev|www).example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]