2009-08-11 71 views
2

我想弄清楚如何設置一個.htaccess的規則集,將強制在前面的「www」的存在如果它最初沒有被指定,但是同時,如果一個子域被指定,它將不會有任何影響;所有這些都不需要對任何域名進行硬編碼,以便腳本可以在不同的服務器和配置中移植。.htaccess需要WWW的域名,但允許子域名,如果存在沒有硬編碼

編輯:

對不起,我沒能得到這個解釋就在拳頭地方。所以,我需要的是如下:

http://example.com - >重定向到http://www.example.com

http://www.example.com - >不重定向

http://subdomain.example.com - >不重定向

回答

12

mod_rewrite規則應該對第二去做level domain:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

是的,這部分工作,但它不包括子域的一部分;例如,如果您訪問http://subdomain.example.com,則會將您重定向到http://www.subdomain.example.com,而您不應該這樣做。 – titel 2009-08-11 22:00:22

+0

我想這是一個問題,我上面寫的第二個URL是http:// www .subdomain.example.com(與www) – titel 2009-08-11 22:02:00

+0

@titel:我得到了你想說的。它現在應該適用於任何二級域名。 – Gumbo 2009-08-11 22:04:33

1
RewriteCond %{HTTP_HOST} ^example\.org 
RewriteRule^http://www.example.org%{REQUEST_URI} [L,R=301] 

這不會重定向子域名,如mail.example.org