2012-04-18 101 views
0

的一部分,這是我目前的.htaccess:mod_rewrite的不同語言的網址

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} !-d [NC] 

RewriteRule ^$ /launcher/index.html [L] 

RewriteRule ^en/admin$ /main/index.php?lang=en&action=acp [L] 
RewriteRule ^sp/admin$ /main/index.php?lang=sp&action=acp [L] 

RewriteRule ^en/(.*)$ /main/$1?lang=en [L] 
RewriteRule ^sp/(.*)$ /main/$1?lang=sp [L] 

我有啓動器屏幕(這是工作的罰款),和我的網站PHP文件,這是主/ index.php文件。我使用$ _GET將有關哪些頁面的信息傳遞給我的index.php,即:index.php?action = download & file = 123。我將使用兩個根級別/ en /用於英語,而/ sp /用於西班牙語。這些傳遞給index.php爲?lang = en或?lang = sp。

我有2個問題,我無法修復;

  • 我的規則,失敗的一個奇怪的矛盾。可能有更好的方法來做我想做的事情。我非常感謝,如果有人能告訴我如何。我是一個完整的noob在mod_rewrite

  • 當我使用?variable = value在URL的末尾添加更多內容時,它發生在?lang = en或?lang = sp之後。這意味着第二個問號會導致$ _GET發生故障,並且那些$ _GET傳遞的變量會丟失。我需要一種方式來追加兩個$ _GET與mod_rewrite一起?

回答

0

要解決您的第二個問題,您是否使用過QSA標誌?引述docs

「qsappend | QSA」(查詢字符串追加)

此標記強制重寫引擎替換字符串的查詢字符串部分追加而不是替換它現有的字符串。當您想通過重寫規則將更多數據添加到查詢字符串時使用此選項。

關於第一個問題,你有可能結合ensp到像下面一條規則。不過,這是否有所改善是有爭議的。

RewriteRule ^(en|sp)/(.*)$ /main/$2?lang=$1 [L,Q]