Php .htaccess部分查询字符串重写

Php .htaccess部分查询字符串重写,php,regex,apache,.htaccess,Php,Regex,Apache,.htaccess,我一直在看一些关于这个问题的不同的问题,但是没有一个完全像我所需要的那样有效 以这个URL为例: http://example.com/not-right-contact?portal=9648&... 已发送带有此门户ID的电子邮件,但不正确。所以,现在我们需要替换它并正确重定向URL。在门户查询字符串后面,有许多字段将在此页面上预填充表单。我们需要保持这些完好无损 以下是我从许多来源拼凑而成的: RewriteCond %{QUERY_STRING} (^|&)?porta

我一直在看一些关于这个问题的不同的问题,但是没有一个完全像我所需要的那样有效

以这个URL为例:

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,但它没有附加任何附加变量。非常感谢你的帮助

更新

使用作为参考,我已将重写更改为以下内容:

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

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

使用[L,QSA]在重定向url结尾保留并附加查询字符串。

使用[L,QSA]在重定向url结尾保留并附加查询字符串。

不幸的是,否。添加QSA会产生HTTP 500错误。不幸的是,否。添加QSA会创建HTTP 500错误。