[英]Excluding a subdomain from .htaccess mod_rewrite rules?
我對.htaccess文件不太熟悉,我正試圖從已經存在的以下重寫規則中排除子域(類似於dev.example.com)
:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
此規則禁止任何人只是輸入example.com
或http://example.com
並強制所需的URL呈現, http://www.example.com
。
我嘗試了一些從這個重寫規則中排除子域名的選項,但無濟於事。 該站點上的每個目錄都有自己的.htaccess文件,但似乎這個目錄仍然優先。 有任何想法嗎? 謝謝!
現有規則已排除子域。 你只需要添加一個新條件:
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]
你也可以擺脫正則表達式:
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]
語法可以在http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewritecond找到
我不確定這是否適合您,但最好使用apache virtualhosts配置而不是.htaccess
文件。 在這種情況下,對於非www - > www重定向,我通常使用類似的東西:
<VirtualHost *:80>
ServerName example.com
RedirectMatch permanent ^(.*) http://www.example.com$1
</VirtualHost>
這通常比mod_rewrite
規則更安全。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(dev|www)\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.