2013-10-03 99 views
1

我需要一些協助,爲網站編寫2個適當的mod_rewrite規則。mod_rewrite默認重定向到丟失段

基本上我有以下結構:其次是其他URL段

http://www.website.com/subsite/lang(例如www.website.com/corporate/en)。一切正常。

我需要做什麼,但是,是:

  1. 部隊參觀www.website.com和(如果)省略第一段(分會場)時重定向到http://www.website.com/default/。這可以是硬編碼的值。

  2. 使用.htaccess檢測broswer $ lang,如果未在URL中指定語言,則重定向到http://www.website.com/subsite/$lang

用.htaccess做這兩條規則的正確方法是什麼?

+1

http://stackoverflow.com/questions/16511378/redirect-from-and-to-subdomain-with- htaccess-based-on-browser-language可能會有所幫助。 – Lammi

回答

0

1很簡單:

RewriteEngine On 
RewriteRule ^$ /default/ [L,R=301] 

但2需要接受語言頭的解析,這是不是一個正則表達式的簡單替換。

0

啓用通過httpd.confmod_rewrite.htaccess,然後把這個代碼在你DOCUMENT_ROOT/.htaccess文件:

RewriteEngine On 

# if 1st segment is not there send to /default 
RewriteCond %{REQUEST_URI} !^/(default|corporate)/ [NC] 
RewriteRule^/default/ [L,R=301] 

# if language was not specified in the URL then send to /corporate/$lang 
RewriteCond %{REQUEST_URI} !^/(?:default|corporate/[a-z]{2}) [NC] 
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}) [NC] 
RewriteRule^/corporate/%1 [L,R=301] 
+0

甜!這幾乎可行。但是,我正在被重定向到最後的'''http:// www.website.com/corporate/en-US,en%3bq = 0.8'''而不是簡單的'en'。有沒有辦法來解決這個問題? 另外我只有3種語言。 'fr','en'和'de'。如果沒有檢測到3個字符,我想將其重定向到'fr' – kernelpanic

+0

好的,讓我試着修復 – anubhava

+0

現在嘗試編輯的代碼。 – anubhava