1

我想创建一个从页面到同一页面的 301,除了目标页面在 url 中有一个参数。浏览器向我显示错误(重定向太多),因此似乎存在无限循环。这是我的代码:

RewriteEngine on
Redirect 301 /index.php http://www.monsite.com/index.php?step=1

感谢我的建议:D

4

1 回答 1

11

您需要对重定向进行条件化并在 PHP 中执行以防止无限重定向循环。

索引.php:

if(!isset($_GET['step'])){
    header('Location:http://www.monsite.com/index.php?step=1');
}

您配置它的方式将无限期地重定向,因为没有对引擎说“一旦设置了 URL 变量步骤就不要重定向我”。

在 .htaccess 文件中有一些方法可以做到这一点,但由于这些重定向通常是应用程序逻辑,因此直接在脚本中执行似乎更有意义。

或者,对于纯 .htaccess 解决方案:

#if query string is empty

RewriteCond %{QUERY_STRING} ^$

#match on / for root, or .index.php in request and send to query string version 

RewriteRule ^(/|index.php)?$ /index.php?step=1 [R=301,L]
于 2012-06-26T15:13:57.760 回答