簡體   English   中英

htaccess url 重定向,獲取參數 ID 並減少值

[英]htaccess url redirect with get parameters ID and reduce value

我想通過檢索 ID 參數執行 url 重定向到新域,但只獲取前 4 個字符。 有人知道怎么做嗎?

例如,原廠 url:

http://www.original.example/see/news/actualite.php?newsId=be9e836&newsTitle="blablabla"

至:

https://www.new.example/actualites/be9e

我已經測試過:

RewriteCond %{QUERY_STRING} ^newsId=(.*)$ [NC]
RewriteRule ^$ https://www.new.example/actualites/%1? [NC,L,R]
RewriteCond %{QUERY_STRING} ^newsId=(.*)$ [NC] RewriteRule ^$ https://www.new.example/actualites/%1? [NC,L,R]

這有幾個問題:

  1. RewriteRule模式中的正則表達式^$僅匹配文檔根。 您的示例中的 URL 是/see/news/actualite.php - 所以這個規則永遠不會匹配(並且條件永遠不會被處理)。

  2. 正則表達式^newsId=(.*)$正在捕獲newsId=之后的所有內容,包括任何其他 URL 參數。 您只需要此特定 URL 參數的前 4 個字符。

順便說一句,您現有的條件取決於newsId是第一個 URL 參數。 也許總是這樣,也許不是。 但是不管順序如何,檢查這個 URL 參數是相對簡單的。

另外,您需要不區分大小寫的匹配嗎? 或者它總是如您的示例中所述的newsId 僅在必要時使用NC標志,而不是默認使用。

請嘗試以下操作:

RewriteCond %{QUERY_STRING} (?:^|&)newsId=([^&]{4})
RewriteRule ^see/news/actualite\.php$ https://www.new.example/actualites/%1 [QSD,R,L]

%1反向引用現在僅包含newsId URL 參數值的前 4 個字符(即非&字符),由正則表達式([^&]{4})

QSD標志 (Apache 2.4) 從重定向響應中丟棄原始查詢字符串。 不需要 append替換字符串? (一個的查詢字符串),就像在早期版本的 Apache 中所要求的那樣。

暫無
暫無

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

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