Apache HTTP_URI 重定向所有内容,但某些 url query_string

Apache HTTP_URI redirect everything but sertain urls that query_string

我们想将所有流量重定向到我们的新页面。我们仍然希望 ceratin url 仍然可以在我们的旧页面上访问,因为这些 url 已被我们的合作伙伴使用并且尚未准备好迁移。

我遇到的问题是 QUERY_STRING 个参数。

我目前的规则:

RewriteCond %{REQUEST_URI} !^/endfile.php
RewriteCond %{REQUEST_URI} !^/sites/default/files/pdffolder/
RewriteCond %{REQUEST_URI} !^/insure/agency
# RewriteCond %{REQUEST_URI} !^/content/insurance1?szs=000029&wssl=1
# RewriteCond %{REQUEST_URI} !^/text/insurance2?wssl=1&zst=enter    
RewriteRule (.*) https://www.new-domain.eu/ [R=301,L]  

代码适用于拳头 3。我无法让它适用于第 4 条和第 5 条规则。我目前已经注释掉了。

我尝试使用 QUERY_STRING 规则,但没有成功。有什么方法可以在重写条件下使用AND吗?

有什么想法吗?

您无法使用 REQUEST_URI 匹配查询字符串。使用 THE_REQUEST 来匹配 URI 和查询:

RewriteCond %{REQUEST_URI} !^/endfile\.php [NC]
RewriteCond %{REQUEST_URI} !^/sites/default/files/pdffolder/ [NC]
RewriteCond %{REQUEST_URI} !^/insure/agency [NC]
RewriteCond %{THE_REQUEST} !\s/+content/insurance1\?szs=000029&wssl=1[&\s] [NC]
RewriteCond %{THE_REQUEST} !\s/+text/insurance2\?wssl=1&zst=enter[&\s] [NC]    
RewriteRule ^ https://www.new-domain.eu/? [R=301,L]  

另请注意在目标中使用尾随 ? 来去除任何现有的查询字符串。