我遇到了 GeoIP 重定向的絆腳石(Apache/2.4.6 (CentOS))
.htaccess 具有強制性指令(功能必需,更改可能會破壞整個站點)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
所以當我添加到 .htaccess 一個 GeoIP 規則時
RewriteCond "%{ENV:GEOIP_COUNTRY_CODE}" ^DE$
RewriteRule ^/?index\.php$ http://de.example.com/info.html$1 [L]
它作業正常,但是當我想設定類似的重定向到帶有翻譯的頁面時
RewriteCond "%{ENV:GEOIP_COUNTRY_CODE}" ^DE$
RewriteRule ^/?index\.php$ http://de.example.com/?lang=de$1 [L]
我有錯誤“重定向太多”。
在 .htaccess 中禁用 GeoIP 并直接訪問http://de.example.com/?lang=de - 一切正常。
已經花了幾個小時在語法上玩,但仍然無法找出問題所在,所以感謝任何嘗試的想法!
uj5u.com熱心網友回復:
您很可能不想執行將您的內部 URL 暴露給客戶端的外部重定向。您想要的(大概)是檢測 GEOIP 國家并在此基礎上添加具有相同國家代碼的查詢引數。lang=當查詢引數已經存在時,您需要添加一個否定條件來停止重寫。
您可以在 .htaccess 中嘗試此代碼:
RewriteEngine On
RewriteCond "%{ENV:GEOIP_COUNTRY_CODE}" ^DE$
RewriteCond %{QUERY_STRING} !(^|&)lang= [NC]
RewriteRule ^/?(index\.php)?$ $0?lang=de [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
確保在測驗此更改之前清除瀏覽器快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/488480.html
上一篇:配置.htaccess
