重定向并将参数保留在 .htaccess 的 url 中

Posted

技术标签:

【中文标题】重定向并将参数保留在 .htaccess 的 url 中【英文标题】:Redirect and keep the parameter in the url on .htaccess 【发布时间】:2020-08-15 05:31:18 【问题描述】:

这应该是一个简单的设置,但如果不熟悉所使用的术语,我无法提出解决方案。我尝试了几个在 Internet 上找到的示例。

我只是希望当用户通过 URL https://example.com?foo=bar 访问该网站时,他会被定向到 https://www.example.com/new-nice-page?foo=bar

更改页面并保留参数。

我测试的最后一件事:

RewriteEngine on
RewriteRule ^https://www.example.com/new-nice-page?foo=$ example.com?foo=$1 [QSA]

【问题讨论】:

我刚刚进行的另一个测试:RewriteRule 上的 RewriteEngine ^example.com?foo=$ $1/new-nice-page?foo=$2 [R=301,L] 应该可以工作吗? 【参考方案1】:

您可以在 .htaccess 的顶部使用此重定向规则:

RewriteEngine On

RewriteCond %QUERY_STRING (^|&)foo= [NC]
RewriteRule ^/?$ /new-nice-page [L,R=301]

请注意,查询字符串会自动结转到目标 URL。

【讨论】:

看起来不错。我会测试这个。谢谢,阿努巴瓦。 抱歉耽搁了。但我忘了回来。这适用于我的问题。 :)【参考方案2】:

看这个帖子:simple .htaccess redirect : how to redirect with parameters?

您只需重定向,无需担心参数,因为它们会自动传递:Redirect permanent /jsn.php http://www.site2.com/jsn.php

【讨论】:

真的吗?人!我现在就测试一下。如果它有效,我会回来告诉你。 :) 我认为它不起作用。如果 url 有参数“foo”,它应该只重定向,如果没有,它会将所有内容重定向到新页面。 我确定你想要什么。这是您观察到的,还是您想要的行为? 只是如果我这样做,它总是会重定向,而我只需要在有“foo”参数时重定向,并转到同一个站点,只在另一个页面上保持这个参数。

以上是关于重定向并将参数保留在 .htaccess 的 url 中的主要内容,如果未能解决你的问题,请参考以下文章

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

在 .htaccess 重定向中保留 HTTP/HTTPS 协议

.htaccess 301 重定向,保留路径

如何在不保留路径的情况下进行htaccess重定向?

wordpress 中 wp-login.php 的重定向和 authuser 的 .htaccess 问题

使用 htaccess 重定向页面,但保留 URL 结构并仅更改域