2014-02-12 64 views
1

我正在使用以下語言翻譯規則。虛擬子文件夾.htaccess忽略用於源目的的語言代碼

都工作得不錯:

RewriteRule ^([a-z]{2})/?$ /index.php?act=setlang&val=$1 [L,CO=LANG:$1:%{HTTP_HOST}] 

RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)\.php$ $2.php?act=setlang&val=$1 [L,CO=lang:$1:%{HTTP_HOST}] 

所以要www.mysite.com/en/test.php此按預期工作。

但是如果我更改基礎URL從mysite.com to mysite.com/(2letterlangcodehere)` 讓所有的鏈接自動具有郎前綴然後一切都被搞砸了(我相信這是由於相對路徑,因爲期待在mysite.com/(2letterlangcodehere)找到某些資源,這顯然不存在,因爲我沒有物理地創建這些文件夾)。

我該如何讓mysite.com/(langcodehere)在視覺上出現並執行上面的規則,但實際上這個文件夾只是指向mysite.com/對於腳本,css,源代碼透視圖這是可能的.htaccess?

回答

1

嘗試將現有的規則之前,這條規則:

RewriteRule ^[a-z]{2}/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [L,NC,R=301] 

如果不工作,那麼你有2種選擇:

  1. 使用絕對路徑在你的CSS,JS,圖片文件,而比相對的一個。這意味着您必須確保這些文件的路徑始於http://或斜槓/
  2. 嘗試添加該在你的頁面的標題:<base href="/" />
+0

謝謝,這部分的工作,但這是正確的解決方案,我想我必須堅持與絕對URL ..因爲郎路徑可能或可能不存在所以親戚不能成爲一個選擇。 – Athanatos

+0

是的,絕對URL最適合虛擬文件夾/漂亮的URL。 – anubhava