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

Joj*_*n45 1 .htaccess redirect http-status-code-301

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

RewriteEngine on
Redirect 301 /index.php http://www.monsite.com/index.php?step=1
Run Code Online (Sandbox Code Playgroud)

感谢为我提供的建议:D

Dea*_*ado 9

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

index.php文件:

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

你配置它的方式将无限期地重定向,因为没有任何东西对引擎说"一旦设置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]
Run Code Online (Sandbox Code Playgroud)