带有查询字符串的 URL 重定向 - htaccess

Posted

技术标签:

【中文标题】带有查询字符串的 URL 重定向 - htaccess【英文标题】:URL redirect with query strings - htaccess 【发布时间】:2014-07-08 05:04:24 【问题描述】:

这真的让我很烦,我已经学习了一些教程,但就是无处可去。我正在尝试从以下位置进行 301 重定向:

/webpage-mackay.php?wp=Mission

到:

http://domain.org.au/webpage.php?wp=Mackay%20Mission

我尝试过这样写:

RewriteCond %QUERY_STRING ^wp=Mission$
RewriteRule ^/webpage-mackay\.php$ http://domain.org.au/webpage.php?wp=Mackay%20Mission [R=301,L]

和:

RewriteCond   %REQUEST_URI    ^/webpage-mackay.php$
RewriteCond   %QUERY_STRING   ^wp=Mission$
RewriteRule   ^(.*)$ http://domain.org.au/webpage.php?wp=Mackay%20Mission   [R=301,L]

但结果是:

http://domain.org.au/webpage.php?wp=Mission

我错过了什么吗?我使用了this 和this 作为参考

【问题讨论】:

浏览器可能会缓存 301 响应。所以可能会缓存错误的响应。 我在另一个浏览器和另一个服务器上尝试过,仍然得到相同的结果。 我看到的唯一原因是另一个重定向指令,例如配置或 htaccess 中的Redirect 【参考方案1】:

我发现您的第一次尝试有 2 个问题:在 RewriteRule 中不需要前导斜杠,并且 %20 不起作用,因为“%”是一个特殊字符。 您可以在这里尝试:

# Solution 1 : with a space character in the final URL
RewriteCond %QUERY_STRING ^wp=Mission$
RewriteRule ^webpage-mackay\.php$ http://domain.org.au/webpage.php?wp=Mackay\ Mission [R=301,L]

# Solution 2 : with the %20 in the final URL
RewriteCond %QUERY_STRING ^wp=Mission$
RewriteRule ^webpage-mackay\.php$ http://domain.org.au/webpage.php?wp=Mackay\%20Mission [R=301,L,NE]

【讨论】:

以上是关于带有查询字符串的 URL 重定向 - htaccess的主要内容,如果未能解决你的问题,请参考以下文章

nginx重定向不包括查询字符串

text Wordpress .htacces重定向到https

使用查询参数和 URL 中的 ~ 进行 301 重定向

使用 mod_rewrite 重定向查询字符串(反之亦然)

url重定向时如何使用Powershell从Web下载文件

301 将带有特殊字符的 URL 重定向到主页 htaccess