.htaccess查询字符串重定向相同的值

k5ifujac  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(123)

我想使用将带有查询字符串的URL重定向到另一个查询字符串。htaccess

From:https://example.com/?smp=123456(=后任意数字)
收件人:https://example.com/?p=123456(与发件人地址相同)

我试着跟着但没用。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^/?smp=([0-9]+)$ [NC]
RewriteRule ^$ https://www.example.com/?p=$ [R=301,L]
q8l4jmvw

q8l4jmvw1#

RewriteCond %{QUERY_STRING} ^/?smp=([0-9]+)$ [NC]
RewriteRule ^$ https://www.example.com/?p=$ [R=301,L]

这里的主要问题是,您没有使用从前面的 conditionRewriteCond指令)中捕获的URL参数值。%1反向引用保存此值。substitution 字符串末尾的$将被视为文字$
还有...

  • 查询字符串不是以/开头,所以正则表达式中的/?部分(可选斜杠)是多余的。
  • 你正在重定向到www.example.com,但是你的示例使用了example.com(域顶点)。如果你只是想重定向到相同的主机名(和 scheme),那么scheme+主机名可以省略。然而,为了最大限度地减少规范重定向,那么它应该留下来。
  • [0-9]可以缩短为\d

请尝试以下操作:

RewriteCond %{QUERY_STRING} ^smp=(\d+)$ [NC]
RewriteRule ^$ https://example.com/?p=%1 [R=301,L]

这将需要接近根.htaccess文件的顶部。

相关问题