簡體   English   中英

從.htaccess mod_rewrite規則中排除子域名?

[英]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.comhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM