.htaccess - 如果不存在查询字符串,则重定向301

时间:2012-06-26 15:11:20

标签: .htaccess redirect http-status-code-301

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

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

感谢我的建议:D

1 个答案:

答案 0 :(得分:9)

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

的index.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]