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 我该如何避免这种情况?

4

2 回答 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>
于 2012-07-24T13:22:31.667 回答
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]
于 2020-09-30T13:24:18.453 回答