【问题标题】:Rewriting www.mydomain.com/index.php to www.mydomain.com将 www.mydomain.com/index.php 重写为 www.mydomain.com
【发布时间】:2011-06-10 21:06:33
【问题描述】:

我找到了两种从 index.php / index.html 重定向到域的不同方法。两者似乎都有效;它们都没有以循环结束:

RewriteEngine On
RewriteRule ^index\.(php|html?)$ http://www.martin-thoma.de/terminplaner/ [R=301,L]

RewriteEngine On
RewriteCond %{IS_SUBREQ} false
RewriteRule ^index\.(php|html?)$ http://www.martin-thoma.de/terminplaner/ [R=301,L]

编辑:这是另一条规则:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
RewriteRule ^index\.(html?|php)$ http://www.martin-thoma.de/terminplaner/ [R=301,L]

这三种改写方式的区别在哪里?我应该使用什么?

这是manual的一部分:

IS_SUBREQ 将包含文本“true” 如果请求当前是 处理的是一个子请求,“假” 否则。子请求可能是 由需要的模块生成 解析其他文件或 URI 为了完成他们的任务。

【问题讨论】:

  • 您确定这实际上是在减少,并且您不只是点击实际文件或其他重写规则吗?我有 RewriteLogLevel 9 和 RewriteLog /var/log/apache2/rewrite.log 所以我可以查看日志,并且它不会触发任何一条规则。我在 Apache 2.2 上。

标签: mod-rewrite redirect apache2


【解决方案1】:

您的 .htaccess 肯定不在 http://www.martin-thoma.de/terminplaner/ 目录中。所以,他们正在工作:)

不管怎样,你看,第一个相当简单。而且,它有效。对于第二个,IS_SUBREQ 始终为 false(假设没有其他重写规则正在将其他内容转换为 index.php 或 index.html。因此,它也可以工作。

This page 将帮助您了解 IS_SUBREQ 何时为真。这个页面有例子。

如果你没有任何其他规则,你可以非常安全地使用第一个(没有 RewriteCond)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2023-03-18
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多