我发现有两种不同的方法可以从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” 如果当前的请求 已处理是子请求,“false” 除此以外。子请求可能是 由需要的模块生成 解决其他文件或URI 为了完成他们的任务。
答案 0 :(得分:1)
肯定你的.htaccess不在http://www.martin-thoma.de/terminplaner/
目录中。所以,他们正在努力:)
无论如何,你看,第一个相当简单。而且,它的工作原理。对于第二个,IS_SUBREQ始终为false(假设没有其他重写规则将其他内容转换为index.php或index.html。所以,它也在工作。
This page将帮助您了解IS_SUBREQ何时为真。这个页面有例子。
如果您没有任何其他规则,您可以非常安全地使用第一个(没有RewriteCond)