.htaccess:重写条件和重写问题

时间:2013-06-24 14:09:49

标签: .htaccess mod-rewrite hosting subdomain shared

我正在使用多个子域的共享主机上的CakePHP项目。由于Cake的htaccess存在问题,我不得不将主站点移动到子文件夹中,并编写新的htaccess将用户重定向到此文件夹(同时保留子域请求不变)。在那一刻,我的htaccess文件看起来像:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^www\.domain\.com$
    RewriteCond %{REQUEST_URI} !^/domain/
    RewriteRule (.*) /domain/$1
</IfModule>

这适用于在网址前加上“www”的请求,但http:// domain.com请求存在一些问题。在IE&amp; Chrome这个地址自行解析为'www'网址,但在Firefox&amp; Safari,它显示目录结构。

我需要弄清楚如何在重写条件中包含http:// domain.com请求,而不会影响其他子域。

任何建议都将不胜感激。谢谢。阿德里安

2 个答案:

答案 0 :(得分:1)

尝试使用此主机匹配:

^(www\.)?domain\.com$

答案 1 :(得分:1)

将您的%{HTTP_HOST}重写条件更改为

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/domain/ [NC]
    RewriteRule (.*) /domain/$1 [L]
</IfModule>
  • ?中的(www\.)?表示一个出现,即使其成为可选项。
  • [L]标记为最后一次,即重写应停止在此规则。
  • [NC]使所有匹配不区分大小写。