我爲我的multil找到了以下.htaccess
文件。項目。 但是有一些問題我無法解決。使用htaccess和多語言網站的重寫規則
目標是重寫URL,例如來自:
/en/prod/index.php
到
/prod/index.php?lang=en
這必須爲每個文件夾,而不是隻爲督促。 有時鏈接在?
之後已經有一些變量,所以重寫規則應該檢測到這個?
並將其更改爲&
。 使用我的代碼,我可以用&
代替?
,但是如果沒有?
存在,這也適用!
二(和主要)問題: 如果文件存在(在我前面的例子)/prod/index.php
然後在瀏覽器應該顯示此頁,但如果文件不存在,所有的請求應該被重定向到index.php
。
隨着我的代碼請求是總是重定向,因爲該文件不對應的鏈接,所以條件不匹配。
謝謝你的幫助!
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteCond %{QUERY_STRING} ^(\??)(.*)$ [NC]
RewriteCond %{REQUEST_URI} ^/(it|en)/(.*)$ [NC]
#is it possible here to have %3 instead of rewriting (it|en)? Does not work...
RewriteRule ^(it|en)/(.*)$ /%3/$2?lang=%3&%2 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ index.php [NC,L]
謝謝!你能否在'%{DOCUMENT_ROOT}'之後更好地向我解釋'%2'? 「RewriteRule」的第一部分不能包含像'%1'或'$ 1'這樣的變量以避免重複'(it | en)'? – Perocat
@Perocat試圖確定'%{REQUEST_URI}'行中的匹配組「(。*)」是否存在。 –
謝謝!因此它檢查是否存在'DOCUMENT_ROOT/files/file.php'成爲'DOCUMENT_ROOT/files/file.php'(其中'$ 2'是從'(。*)中取得的'files/file.php') '在第一個RewriteCond中的'/(it | en)/'之後)? – Perocat