2010-08-03 24 views
0

我目前使用的follwoing代碼在我的.htaccess文件對於多個頁面的PHP「lang?=」mod_rewrite?

RewriteEngine On 
RewriteBase/

# Redirect languages 
RewriteRule ^(en|es|zh\-tw|zh\-cn)/?$ index.php?lang=$1 [L] 

與該代碼,我每次鍵入實例時,/en在URL的末尾,它重定向我/?lang=en(加載的英文內容從PHP數組):

例如:

example/en重定向我example/?lang=en同時保持例子/ EN的URL。

但我也有一個thanks.php頁面,上面的代碼中明確只爲的index.php頁工作。

我怎樣才能使重寫規則兩個index.phpthanks.php頁的工作?

+1

你想讓URL看起來像'thanks.php'頁面那樣? – 2010-08-03 11:06:08

+0

@Tim類似於:www.example.com/thanks/en(英文版)和www.example.com/thanks/es(西班牙文版))。 – alexchenco 2010-08-03 12:28:45

回答

0

最直接的辦法就是要做到這一點:

RewriteRule ^(en|es|zh\-tw|zh\-cn)/?$ index.php?lang=$1 [L] 

RewriteRule ^thanks/(en|es|zh\-tw|zh\-cn)/?$ thanks.php?lang=$1 [L] 

如果你想讓它更一般的,你的白名單文件的選項,如:

RewriteCond $1 ^(thanks)/$ [OR] 
RewriteCond index ^(index)$ 
RewriteRule ^(.+/)?(en|es|zh\-tw|zh\-cn)/?$ %1.php?lang=$2 [L] 

...其中(thanks)將是管道分隔的文件列表,您希望具有此功能,或者您可以接受每個請求作爲到現有PHP頁面的傳遞:

RewriteRule ^(en|es|zh\-tw|zh\-cn)/?$ index.php?lang=$1 [L] 

RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.*?[^/]?)/(en|es|zh\-tw|zh\-cn)/?$ $1.php?lang=$2 [L]