我想洗掉字串
?mobile=1
從不同的 URL 中輸出.htaccess。所以:
https://www.example.com/?mobile=1 應該成為 https://www.example.com/
和
https://www.example.com/something/?mobile=1 應該成為 https://www.example.com/something/
我嘗試了以下
RewriteEngine On
RewriteRule ^(. )?mobile=1 /$1 [R=301,L,NC]
但這似乎不起作用。有任何想法嗎?
uj5u.com熱心網友回復:
RewriteRule ^(. )?mobile=1 /$1 [R=301,L,NC]
該RewriteRule 模式僅與 URL-path 匹配,特別是排除了查詢字串。所以上面的內容永遠不會匹配。(除非?在 URL 路徑中有一個 % 編碼,例如。?)
要匹配查詢字串,您需要一個附加條件(RewriteCond指令)并與QUERY_STRING服務器變數匹配。
正則運算式. (1 個或更多)將與檔案根目錄不匹配(即您的第一個示例:)https://www.example.com/?mobile=1。在這種情況下,您需要允許一個空的URL 路徑。例如。.*(0 或更多)。
例如,在您的根檔案頂部附近嘗試以下.htaccess操作:
RewriteCond %{QUERY_STRING} =mobile=1
RewriteRule (.*) /$1 [QSD,R=301,L]
這與查詢字串mobile=1完全匹配,區分大小寫(如您的示例中所示)。不能存在其他 URL 引數。在=對前綴CondPattern使得這種精確匹配字串比較,而不是一個正則運算式,因為它通常會。
并重定向到相同的 URL 路徑,由替換字串中的$1反向參考表示,該字串包含來自模式中捕獲組的 URL 路徑。RewriteRule
的QSD(查詢字串丟棄)標志除去從重定向回應查詢字串。
首先使用 302(臨時)重定向進行測驗,并且僅更改為 301(永久) - 如果這是意圖 - 一旦您確認這按預期作業。301 由瀏覽器持久快取,因此可能會使測驗出現問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372983.html
