【问题标题】:.htaccess: rewrite condition and rewrite problems.htaccess:重写条件和重写问题
【发布时间】:2013-06-21 02:00:05
【问题描述】:

我正在开发一个包含多个子域的共享主机中的 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 请求而不影响其他子域。

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

【问题讨论】:

  • 有人吗?拜托,我真的被困在这里了。谢谢

标签: .htaccess mod-rewrite hosting subdomain shared


【解决方案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] 使所有匹配项不区分大小写。

【讨论】:

  • 它说我必须等待 5 小时才能获得赏金
  • @AdrianTrainor 没问题。我可以等。 :)
【解决方案2】:

试试这个主机匹配:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多