htaccess重定向子域名

4
我有以下的 .htaccess 代码:
<IfModule mod_rewrite.c>

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

</IfModule>

问题在于所有子域名都被重定向到www.mysite.co/subdomain。我该如何避免这种情况?

1
这似乎是根据重写所预期的。 - Alvin Wong
你是不是只有在有人访问http://mysite.co/时才尝试重定向? - Jon Lin
2个回答

3
您的重写规则逻辑简单来说是这样的:
  1. 对于除了www.mysite.co之外的任何主机(包括foo.mysite.com,blog.mysite.com等)
  2. 永久重定向(301)到http://www.mysite.co/
  3. 这是在.htaccess文件中要检查的最后一个规则,因此退出
为了不重定向您自己的子域名,最简单和清晰的方法是用更多的重写条件明确处理它(请参见下面的示例)。要了解更多htaccess有趣的技巧,请尝试这个:.htaccess通配符子域名
<IfModule mod_rewrite.c>

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

 </IfModule>

0

你需要运行你的index.php文件

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com$ [NC]
RewriteRule !^index\.php($|/) index.php/accounts/%2%{REQUEST_URI} [PT,L]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接