[英]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.