2009-08-11 67 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