2012-02-14 49 views
-1

嗨社區#1,使用的.htaccess

我已經通過其他大部分的.htaccess問題閱讀添加語言目錄,並在我的.htaccess文件,但沒有成功嘗試了不同的解決方案。

這是事情:我有一個網站(基於CodeIgniter),已經有一個很好的SEO定位。現在,客戶希望它翻譯成另一種語言,但我不想失去這種搜索引擎優化,所以我想重定向一個URL,如http://www.domain.com/contactUshttp://www.domain.com/en/contactUs,作爲(en)當前定位的語言。 CI會照常處理其他語言而不會出現問題。我目前正在本地主機上進行測試,因此以下規則將只有「域」而不是「domain.com」。

我已經試過這些重寫規則:

RewriteEngine on 
Options +FollowSymlinks 

RewriteCond ^(.*)/domain/(.*) !^/en/ 
RewriteRule ^(.*)/domain/(.*)$ $1/domain/en/$2 

我想要的RewriteCond使不執行重寫規則來過濾新的語言來的網址。我究竟做錯了什麼?

回答

0

這樣做:

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_URI} !^/en/ [NC] 
RewriteRule ^(.*)$ /en/$1 [L] 
+0

嗨ThinkingMonkey,謝謝你的回答。我試過你的解決方案,但我得到這個錯誤「在這個服務器上沒有找到請求的URL /en/contactUs.php。」當然,我確實已經創建了該目錄和文件。最重要的是,Cond無法檢查/ en /是否在URL上,因爲它顯示/en/en/contactUs.php錯誤。如果我編輯規則並放置整個URI(RewriteRule ^(。*)$ localhost/domain/en/$ 1 [L]),則會發生內部服務器錯誤。有什麼想法嗎? – ikerjer 2012-02-14 11:07:32

+0

@ikerjer我的不好。現在試試。 – ThinkingMonkey 2012-02-14 13:42:07

+0

仍未找到錯誤。似乎它不是RewriteBase的錯。也許在localhost上測試它與它有關,我會試着看看它是否可以在域中使用,我會讓你知道的。感謝您的幫助! – ikerjer 2012-02-14 15:13:22

0

你應該把所有的文本獨特的語言文件,然後加載它們像這樣:

$this->config->set_item('language',"your_language"); 
$this->lang->load('default', "your_language"); 

寫出來的內容,使用:

$this->lang->line('message_id'); 

更多信息:

http://codeigniter.com/user_guide/libraries/language.html

這應該比創建一個重複的網站,同時仍然是搜索引擎友好效率更高。事實上,它應該更適合搜索引擎優化。

+0

嗨Jahmic,謝謝你的回答。事情是我沒有在我的網站中的重複文件,我已經使用此CI庫http://maestric.com/doc/php/codeigniter_i18n。我希望使用htaccess來保持內容在不使用/ en /的情況下獲得的自然定位,同時引入一個帶有CI結構的新語言。 – ikerjer 2012-02-14 14:23:25

+0

反而延遲迴復......我建議的方法也不需要/ en/segment。我已經實現了很多次,爲用戶存儲一個會話變量的語言切換。無論如何,我沒有看過大佬,但它也可能是有希望的。 – Jahmic 2012-04-20 03:53:34

0
RewriteCond $2 !^en/ 
RewriteRule ^(.*)/domain/(.*)$ $1/domain/en/$2