我正在使用多个子域的共享主机上的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请求,而不会影响其他子域。
任何建议都将不胜感激。谢谢。阿德里安
答案 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]
使所有匹配不区分大小写。