.htaccess部分查询字符串重写

时间:2017-04-25 21:34:30

标签: php regex apache .htaccess

我一直在寻找处理这个问题的几个不同的问题,但没有一个完全像我需要的那样工作。

以此网址为例:

http://example.com/not-right-contact?portal=9648&...

使用此门户网站ID发送了一封电子邮件,但它不正确。所以,现在我们需要替换它并正确地重定向URL。在门户网站查询字符串后面,有许多字段将在此页面上预填充表单。我们需要保持完整。

以下是我从许多来源拼凑而成的内容:

RewriteCond %{QUERY_STRING} (^|&)?portal=9648
RewriteRule ^(.*)$ /not-right-contact?portal=9654%1%2 [L,NE]

这没有做任何事情。有一次,我将URL重写为最后有portal = 9654,但它没有附加任何其他变量。非常感谢帮助。

更新

使用Manipulating the Query String作为参考,我已将我的重写更改为以下内容:

RewriteCond %{QUERY_STRING} ^(.*)portal=9648(.*)$
RewriteRule (.*) /not-right-contact?%1portal=9654%2 [L]

重写是将附加的查询字符串数据放入表单中,但门户网站查询字符串的值仍未更改。每当我将规则的第一个值更改为除(。*)或。?之外的任何值时,我都会收到HTTP 500错误。

1 个答案:

答案 0 :(得分:2)

使用[L,QSA]在您的重定向网址末尾保留并附加查询字符串