.htaccess 仅在 GET 参数存在时重定向

.htaccess redirect only if GET parameter exist

我的 .htaccess 文件中有以下行:

Redirect 301 /folder1 https://www.example.com/folder2/file.php

这会将所有内容从 /folder1 重定向到 https://www.example.com/folder2/file.php

如果 URL 包含 mykey= GET 参数,我需要一个条件只允许此重定向,否则忽略此重定向命令。

我该怎么做?

我终于找到了可行的解决方案:

RewriteCond %{REQUEST_URI} ^/folder1/
RewriteCond %{QUERY_STRING} mykey=
RewriteRule ^folder1\/$ /folder2/file.php [R=301,L]

您不能使用执行基本 URI 匹配的 Redirect 指令来执行此操作。

您需要使用基于 mod_rewrite 的规则,例如:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)mykey= [NC]
RewriteRule ^folder1(/|$) /folder2/file.php [R=301,L,NC]

确保在测试前清除缓存。

参考文献: