簡體   English   中英

如何使用帶動態參數的 .htaccess 重定向 URL?

[英]How to redirect URL using .htaccess with dynamic parameter?

我想重定向

https://example.com/product-info/A100001

https://example.com/product-info/index/index/id/A100001

使用.htaccess 重定向規則

A100001 將是動態的

A100001
A100002
A100003
A100004
....

我正在嘗試這個

RewriteEngine on
RewriteCond %{QUERY_STRING} product-info/A100001
RewriteRule ^$ /routing/index/index/id/? [L,R=301]

來源

還嘗試了其他示例,但在我的場景中不起作用

任何精通 htacees 規則的人都可以在這方面幫助我。

 RewriteCond %{QUERY_STRING} product-info/A100001 RewriteRule ^$ /routing/index/index/id/? [L,R=301]

您的示例 URL 僅包含 URL 路徑,不包含查詢字符串 您發布的規則會將/?product-info/A100001/routing/index/index/id/

請嘗試以下內容:

RewriteRule ^(product-info)/(A\d{6})$ /$1/index/index/id/$2 [R=302,L]

上面的代碼會將/product-info/A123456形式的請求重定向到/product-info/index/index/id/A123456

$1反向引用僅包含product-info ,從RewriteRule模式(保存重復)中捕獲, $2包含動態部分( A后跟 6 位數字)。

這是一個 302(臨時)重定向。 始終首先使用 302 進行測試,以避免潛在的緩存問題。

.htaccess文件中指令的順序很重要。 在任何現有重寫之前,此規則可能需要在文件頂部附近添加 go。


更新:

重定向正在使用你的代碼,你能告訴我參數模式嗎,我需要從 A452218 到 A572217 的數字

Regex 不處理數字范圍,只處理字符范圍。 如果您特別只想匹配指定范圍內的數字,那么您需要執行以下操作(更復雜):

RewriteRule ^(product-info)/A(45221[89]|4522[2-9]\d|452[3-9]\d{2}|45[3-9]\d{3}|4[6-9]\d{4}|5[0-6]\d{4}|57[01]\d{3}|572[01]\d{2}|57220\d|57221[0-7])$ /$1/index/index/id/A$2 [R=302,L]

注意: $2反向引用現在只包含動態數字,減去A前綴,它現在明確包含在替換字符串中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM