簡體   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