2012-09-07 41 views
0

可能重複:
redirect using htaccess file的.htaccess重寫HOWTO

你好(很簡單的問題),

如何映射

mydomain/language/somepage 

mydomain/somepage.php 

當然MYDOMAIN的物理頁面的存在/ somepage.php

的想法是,/ EN/SomePage的,/ FR/SomePage的,/德/ SomePage的所有點somepage.php(我打算使用php獲取URL中傳遞的語言)。

更具體地說,我想阿帕奇理解打壓要麼/ FR/EN /日從請求URI,並提供正確的文件,沒有任何/ FR/EN/DE子目錄,我的身體樹:即

root/fr/subdir/subsubdir/somepage 

應指向

root/subdir/subsubdir/somepage.php 

謝謝!

*編輯*

所以,我覺得我得到一個更好的主意URL重寫是如何工作的話,我來此。它壞了,我真的吸食正則表達式,所以如果有人可以幫我整理一下,我會喜歡! ^^

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond ^[a-z]{2}$/%{REQUEST_FILENAME}\.php -f 
RewriteRule ^([a-z]{2})/(.*)$ $2.php?lang=$1 

說明:該URL將被傳遞到在

root/(fr|de|en|whatever)/document 

形式Apache和被(應)改寫的形式和/傳遞到PHP

root/document.php?lang=(fr|de|en|whatever) 

我希望它很清楚,TYVM!

而且,能夠通過子目錄以及像

root/(fr|de|en|whatever)/sub/.../document 

將是非常好的。我需要一個像%的htaccess的進一步解釋爲常量用於此{} REQUEST_FILENAME,%{REQUEST_URI},...

TY

回答

1

如果您正在嘗試將用戶重定向到Apache中某個URL,有這種教程,應該給你一個很好的指引:

Apache mod_rewrite

但是,對於你的網站,我認爲更好的方法採取將使用的語言選項作爲查詢字符串。我覺得你可以更好地處理基於語言的網站。例如,如果您有30個不同國家/地區的本地化版本的網站,則需要爲其中的30個國家/地區執行mod_rewrite,並且當您需要更新您的網站時,您將不得不解決所有問題。但是,如果您使用查詢字符串。你somepage.php可以拿起查詢字符串值並基於那個呈現必要的頁面。

我認爲實施起來比較容易。 (或者,這可能是一種錯誤的做法,我不知道這些缺點)