的.htaccess - 301重定向,如果没有查询字符串存在(.htaccess - 301

2019-07-30 03:30发布

我想从一个网页创建一个301到同一页除了目的地页面中出现的URL的参数。 浏览器告诉我一个错误(过多的重定向),所以它似乎有一个无限循环。 这是我的代码:

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

感谢指点我为:d

Answer 1:

你需要条件化重定向并做它在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]


文章来源: .htaccess - 301 redirect if no query string present