繁体   English   中英

使用 htaccess / mod_rewrite 更改/替换多个 URL 参数

[英]Changing / replace multiple URL parameters with htaccess / mod_rewrite

我得到了这个工作片段来更改查询参数:

RewriteCond %{QUERY_STRING}  (.*)&?name=(.*)? [NC]
RewriteRule ^pokladna/?$  $0?%1name_gls=%2 [R=301,L]

从这里.htaccess 用 url 中的字符串替换重写规则

但就我而言,我需要替换多个查询参数。

例如: https://example.com/?utm_source=source&utm_medium=banner&utm_campaign=campaignname ://example.com/?utm_source=source&utm_medium=banner&utm_campaign=campaignname

需要https://example.com/?mtm_source=source&mtm_medium=banner&mtm_campaign=campaignname

之前、之后或中间可能还有其他参数,不应受到影响。

谢谢!

使用您显示的示例,请尝试遵循 htaccess 规则文件。 请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/\?utm_source=([^&]*)&utm_medium=([^&]*)&utm_campaign=(\S+)\s [NC]
RewriteRule ^ /\?mtm_source=%1&mtm_medium=%2&mtm_campaign=%3 [QSA,L]


通用解决方案:

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/\?(?:[^=]*)=([^&]*)&(?:[^=]*)=([^&]*)&(?:[^=]*)=(\S+)\s [NC]
RewriteRule ^ /\?mtm_source=%1&mtm_medium=%2&mtm_campaign=%3 [QSA,L]

以下是将多个以utm_开头的查询参数替换为以mtm_开头的对应项的方法:

RewriteEngine On

# this rule will find any of the 3 utm_ query parameters and will
# replace each with the mtm_ query parameter. N flag is used here to 
# make this rule loop until all query parameters have been replaced
# in the end it sets an env variable MTM to 1
RewriteCond %{QUERY_STRING} ^(.*&)?u(tm_(?:source|medium|campaign)=[^&]*)(&.*)?$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1m%2%3 [N,DPI,E=MTM:1]

# if env variable MTM is 1 then do an external redirect
RewriteCond %{ENV:MTM} =1
RewriteRule ^ %{REQUEST_URI} [L,R=302,NE]

# other rules go below this line

对结果满意后,将302替换为301 (永久重定向)。

这需要在本地 Apache Web 服务器上进行测试,而不是在任何在线测试设施上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM