[英]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]
這有幾個問題:
RewriteRule
模式中的正則表達式^$
僅匹配文檔根。 您的示例中的 URL 是/see/news/actualite.php
- 所以這個規則永遠不會匹配(並且條件永遠不會被處理)。
正則表達式^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.