/ / Ausschließen einer Subdomain aus .htaccess mod_rewrite-Regeln? - PHP, .htaccess, Mod-Umschreiben

Ausschließen einer Sub-Domain aus .htaccess mod_rewrite-Regeln? - PHP, .htaccess, Mod-Umschreiben

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 № 1

Die 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]