2012-05-30 9 views
0

讓我來解釋一下這個問題。我們有兩種語言的網站:fr & NL(荷蘭語)。如何僅在抵達網站時應用htaccess?

當您在我們的網站後,你www.domain.be土地會被重定向 你(你可以在下面的代碼中看到的),以荷蘭語版本,如果你的瀏覽器語言 被設置爲「NL」,如果它被設置爲'en'(因爲荷蘭人經常在瀏覽器中使用這種語言),或者把你留在www.domain.be/fr.domain.be(這兩個網址都可以打電話給網站 - fr ...一個是更在NL的響應......一個)

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{HTTP:Accept-Language} ^nl [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R] 
RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R] 
</IfModule> 

在網站上,你可以選擇,通過點擊2個鏈接(在右上角),如果你想去fr.domain.be或nl.domain.be。 當您點擊其中一個鏈接時,即使您想要轉到fr部分(在荷蘭人上導航時),ntaccess也會重定向您,而在nl部分也是如此。

我該如何解決這個問題?我希望htaccess只在你第一次訪問網站時重定向你,但是如果他願意的話,可以去激活並允許用戶選擇他的語言。

你能幫我嗎?我在這個爲兩天...

+0

使用cookie,這可能會幫助你:http://stackoverflow.com/questions/3978726/how-to-do-htaccess-redirect-based-on-cookie-value – jdu

回答

1

你只是重定向站點基地/,所以swith直接到另一個頁面不應該是一個問題。

手動切換時不能只使用假索引頁?類似http://nl.domain.be/index

+0

也許這是因爲頂部使用的鏈接右角如 http://fr.domain.be http://nl.domain.be 按照你說的,我寧願使用http:// fr(或nl).domain.be/index? – Simon

+0

我想是的。您的重定向不應該是有效的fr.domain.be/index – zessx

+0

事實上,問題是我用fr.domain.be 我試着用你說的,但它沒有奏效。我終於嘗試了 fr.domain.be/index.php,它工作。 謝謝你的幫助。 – Simon

0

您可以爲規則集創建多個條件,以便您可以添加附加檢查,只有當您將HTTP_REFERER與您的域匹配時纔會發生重定向。

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{HTTP:Accept-Language} ^nl [NC] 
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R] 
RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R] 
</IfModule> 

該!意思是說,當HTTP_REFERER與URL模式不匹配時,基本上你說的是「(通配符).domain.be」。

這會阻止規則在目前位於您的網站上並試圖更改語言時運行。

注意:我不是靠近apache盒來測試這個,所以我的語法可能會關閉,但這應該會讓您走上正確的道路。