/ / Vylúčite subdoménu z pravidiel .htaccess mod_rewrite? - php, .htaccess, mod-prepísať

Vylúčenie subdomény z pravidiel .htaccess mod_rewrite? - php, .htaccess, mod-rewrite

Nie som príliš oboznámený so súbormi .htaccess a snažím sa vylúčiť subdoménu (niečo ako dev.example.com) z nasledujúceho pravidla prepisovania, ktoré už existuje:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Toto pravidlo zakazuje každému vstúpiť example.com alebo http://example.com a vynúti požadovanú prezentáciu adresy URL, http://www.example.com.

Vyskúšal som niekoľko možností vylúčenia subdoményz tohto pravidla prepisovania, ale bez úspechu. Každý z adresárov na webe má svoj vlastný súbor .htaccess, zdá sa však, že tento má stále prednosť. Nejaké nápady? Vďaka!

odpovede:

13 pre odpoveď č. 1

Existujúce pravidlo už vylučuje subdoménu. Stačí pripojiť novú podmienku:

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]

Môžete sa tiež zbaviť regulárnych výrazov:

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]

Syntax sa nachádza na http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewritecond


2 pre odpoveď č. 2

Nie som si istý, či by sa vám to hodilo, ale je dobré používať namiesto toho konfiguráciu virtuálnych hostiteľov apache .htaccess Súbory. V takom prípade zvyčajne používam pri presmerovaní mimo stránky www -> www zvyčajne niečo také ako:

<VirtualHost *:80>
ServerName  example.com
RedirectMatch permanent ^(.*) http://www.example.com$1
</VirtualHost>

To je vo všeobecnosti bezpečnejšie ako a mod_rewrite vládnuť.


2 pre odpoveď č. 3
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(dev|www).example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]