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