1

我正在与多个子域共享托管的 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>

这适用于在 URL 前附加“www”的请求,但 http://domain.com 请求存在一些问题。在 IE 和 Chrome 中,此地址会自行解析为“www”url,但在 Firefox 和 Safari 中,它会显示目录结构。

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

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

4

2 回答 2

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>
  • ?in(www\.)?表示次或一次出现,即使其可选。
  • [L]将其标记为最后,即重写应该停止在这条规则上。
  • [NC]使所有匹配不区分大小写。
于 2013-07-02T14:36:46.670 回答
1

试试这个主机匹配:

^(www\.)?domain\.com$
于 2013-07-02T10:34:09.380 回答