Dot-Htaccess
如果參數值不是葡萄牙語-pt,.htaccess 重定向(僅強制 WHMCS 一個 LANG)
我需要幫助將具有多種語言程式碼的 URL 重定向到具有
.htaccess
. 以下 URL 應重定向:
https://example.com/cp/cart.php?a=add&pid=7&language=us
https://example.com/cp/cart.php?a=add&pid=5&language=de
https://example.com/cp/cart.php?language=nl
https://example.com/cp/home.php?language=uk&test=a
至
https://example.com/cp/cart.php?a=add&pid=7&language=portuguese-pt
https://example.com/cp/cart.php?a=add&pid=5&language=portuguese-pt
https://example.com/cp/cart.php?language=portuguese-pt
https://example.com/cp/home.php?language=portuguese-pt&test=a
重要提示:如果 URL 不包含“語言”URL 參數,請不要執行任何操作。
我的 .htaccess 文件路徑在 cp 文件夾中。我有很多文件,比如 home.php 和 cart.php。我需要這個用於任何網址
要對任何 URL 路徑進行操作,您可以
/cp/.htaccess
使用 mod_rewrite 在文件頂部附近執行以下操作:RewriteEngine on RewriteCond %{QUERY_STRING} ^(.*&)?(language=)(?!portuguese-pt(?:&|$))[^&]*(&.*)?$ RewriteRule ^ %{REQUEST_URI}?%1%2portuguese-pt%3 [NE,R=302,L]
該
RewriteRule
模式^
對於任何 URL 路徑都是成功的。前面的條件(
RewriteCond
指令)匹配查詢字元串。僅當language
URL 參數存在但不等於portuguese-pt
(由負前瞻確定)時才成功。language
否則將丟棄 URL 參數的值。我們擷取圍繞
language
URL 參數值的查詢字元串部分。這些保存在以下反向引用中:
%1
/ 模式- URL 參數之前的(.*&)?
查詢字元串部分(如果有)。這包括URL 參數之前的分隔符。language``&``language
%2
/pattern(language=)
- 擷取文字文本language=
。這必須匹配才能成功。這只是節省了以後的重複。%3
/ 模式- URL 參數(如果有)之後的(&.*)?
查詢字元串部分。這包括URL 參數後的分隔符。language``&``language
替換字元串中的
REQUEST_URI
伺服器變數包含完整的根相對 URL 路徑。我們使用上面解釋的反向引用重建查詢字元串,將其作為 URL 參數的值注入(替換此 URL 參數可能具有的任何其他值)。portuguese-pt``language
需要( ) 標誌來防止
NE
(URL 參數分隔符)在響應中被 URL 編碼。noescape``&
首先使用 302(臨時)重定向進行測試以避免潛在的記憶體問題,即使您稍後將其更改為永久重定向。