2013-02-04 83 views
0

嗨,我需要一些幫助。 問題: 現在我已經使用CMS用於處理在的index.php 我想重定向所有的.html頁面的一切我的網站多語種正在從根訪問,就像將根文件中的html文件重寫爲目錄

http://www.website.com/englishpage.html 我想它重定向到 http://www.website.com/en/englishpage.html

然後輔助重定向將剖析該信息並將其發送到index.php,然後它將提供正確的頁面。

現在,我得到太多的重定向錯誤

# The Friendly URLs part 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*\.html)$ en/$1\.html [R=301,L] 
RewriteRule ^(en|ru)?(\/)?(.*)$ index.php?c=$1&q=$3 [L,QSA] 

我做錯了什麼在這裏

感謝

+0

很難說。你說「'http:// www.website.com/englishpage.html'我想把它重定向到'http:// www.website.com/en/englishpage.html'」但是,你的重寫規則說了其他的東西。因此,請提供一些真實的URL示例。例如:'http:// www.website.com/englishpage.html'到'http://www.website.com/index.php?page = englishpage.html&whatever = whatever'規則不是一個好方法**猜猜**需要什麼,特別是當他們不工作時。 –

+0

抱歉不清楚。本質上,我使用的CMS將根據兩個變量獲取正確的內容:上下文和查詢。上下文部分在請求的明顯目錄中表示,如英語的/ en /和俄語的/ ru /。查詢的其餘部分是頁面名稱/別名。 所以請求如http://www.website.com/ru/english.html 實際上意味着http://www.website.com/index.php?c=ru&q=english.html 希望澄清它:)感謝您的幫助 – Tourshi

回答

1

(.*\.html)不夠具體,因此也符合/en/englishpage.html。它還不斷增加.html到最後。

所以/englishpage.html重定向到/en/englishpage.html.html,其重定向到/en/en/englishpage.html.html.html

要解決這兩個問題:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)\.html$ en/$1\.html [R=301,L] 

RewriteRule ^((en|ru)/)?(.*)$ index.php?c=$1&q=$3 [L,QSA] 

PS沒有必要逃避/

+0

謝謝Gerben,它幫助:)我仍然使用此行: 'RewriteRule ^(zh-cn)?(\ /)?(。*)$ index.php? c = $ 1&q = $ 3 [L,QSA]' 爲了得到它的工作,出於某種原因,你建議它將所有請求轉發給/ ru/ 至於: 'RewriteRule ^([^ /] +) \ .html $ en/$ 1 \ .html [R = 301,L]' 它完美運作。然而由於某種奇怪的原因,所有其他的靜態請求都被破壞了,就像css/js干擾了它們一樣。但我認爲你已經把我放在正確的軌道上。我會及時向大家發佈。謝謝,我感謝你的幫助。 – Tourshi

+0

終於搞定了,只是略微調整了你給我的東西: 'RewriteRule ^([^ /] +).html $ en/$ 1.html [R = 301,L]' 'RewriteRule ^(我也用這個網站來測試我的代碼,讓我的生活變得更輕鬆:) http://// htaccess.madewithlove.be/ – Tourshi