我正在嘗試使用 mod_rewrite 進行一些作業,但我不完全確定它甚至可能。
假設我有一些請求,例如:
https://www.example.com?h=somerandomvalue&u=www.another.example/content
我想取u引數的值并使用這個值重寫請求,所以從上面的示例請求中,我想將它重寫為
https://www.another.example/content
所以基本上,請求:
https://www.example.com?h=somerandomvalue&u=www.another.example/content
重定向至:
www.another.example/content
這可能嗎?我見過其他示例,其中人們捕獲和使用引數作為重寫路徑的一部分,但我沒有看到使用提供的引數重定向到全新域的任何方式。
非常感謝這里的任何幫助或指導!
uj5u.com熱心網友回復:
我見過其他一些例子,其中人們捕獲和使用引數作為重寫路徑的一部分
是的,這是可能的。基本原理是一樣的:
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)u=([\w./-]{6,})(?:&|$)
RewriteRule ^$ https://%1 [QSD,R=302,L]
%1是對前面CondPattern 中捕獲組的反向參考。IE。該值的的uURL引數。
([\w./-]{6,})只是一個非常基本的檢查來匹配一個半有效的 URL。這可以改進。
(?:^|&)正則運算式的前綴確保我們只匹配uURL 引數,而不匹配任何以u.
這只會重定向對根的請求,如您的示例所示。惡意用戶可能會將您的站點變成轉發流量的中繼。
但是,如果沒有進一步驗證重定向到的 URL,則很容易被濫用,不應使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/371379.html
