我有一個基于 Modx CMS 的網站,我需要在啟用多語言功能后為主檔案夾和舊鏈接創建 301 重定向。
我需要實作的是默認回退到英語,例如。確保:
example.com/products -> example.com/en/products example.com/about - example.com/en/about 等。
我還需要確保如果 url 中已經有語言選擇(例如 de),我不會在 url 中添加 en。(所以沒有 example.com/en/de/products)
我在將 /en/ 添加到 url 時遇到問題,我最終在 URL 上出現無限 /en/en/en 回圈
要將 /en/ 添加到 url,我嘗試了以下操作。
RewriteCond %{REQUEST_URI} !^/de$
RewriteCond %{HTTP_HOST} .*example.com [NC]
RewriteRule ^https://example.com/en/%{REQUEST_URI} [L,R=301]
它會導致 url 中出現無休止的 /en/en/en 回圈。
整個htaccess如下:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteBase /
RewriteCond %{REQUEST_URI} !^/de$
RewriteCond %{HTTP_HOST} .*example.com [NC]
RewriteRule ^https://example.com/en/%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
uj5u.com熱心網友回復:
試試下面的代碼。規則是鏈接的(默認為 AND)。因此,如果您的 URL 不是以 , 開頭/en,/de它不是索引 ( /),也不是檔案名或目錄,請執行 301 重定向到英文版本:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/en
RewriteCond %{REQUEST_URI} !^/de
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://%{HTTP_HOST}/en%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/534339.html
