2012-12-23 62 views
3

好吧,我已經浪費了很多時間來解決這個問題,但是我越來越多地嘗試瞭解重寫規則,我越來越不明白髮生了什麼。我需要爲基於codeigniter的項目修復一些重寫規則。Htaccess多語言mod_rewrite

該應用程序是一個基本與模塊,頁面和帖子以及.htaccess文件一起工作的多語言CMS,我需要檢查url是頁面還是帖子並重定向到適當的控制器。

所以在我.htaccess文件到目前爲止,我有以下幾點:

#if I'm on the homepage and i have a language id 
    RewriteCond $1 ^([a-z]{2})/?$ 
    RewriteRule ^(.*)$ index.php?homepage/index/$1 [PT,L] 

    #if module - this works ok when there is no language id 
    RewriteCond $1 ^(gallery|post|products) 
    RewriteRule ^(.*)$ index.php?$1 [PT,L] 

    # Rewrite all other URLs to index.php/URL - page controller 
    RewriteRule ^(.*)$ index.php?page/show/$0 [PT,L] 

通過上面的代碼,如果我進入

http://mydomain.com/gallery/something/9 

一切都很好,很正常,DUT如果我添加一個語言ID像這樣:

http://mydomain.com/en/gallery/something/9 

它不工作了,我找不到頁面/ 404錯誤或從頁面控制器(在.htaccess結尾重定向)。

所以我們可以說,我有網址,可以是這個樣子:

http://mydomain.com/gallery/something/9  
    http://mydomain.com/en/gallery/something/25 
    http://mydomain.com/fr/post/something/31 

我必須將這些網址莫名其妙地重定向到

 http://mydomain.com/gallery/something/9   
    http://mydomain.com/en/gallery/somethingelse/25 
    http://mydomain.com/fr/post/somethingelse/31 

注意,有時我有語言ID,有時我不。 這是我應該用htaccess做的事情嗎? Codeigniter路由是更好的選擇嗎? 感謝您的幫助堆棧溢出:)

回答

1

試一下:

RewriteCond $1 ^[^/]*/?(gallery|post|products) 
+0

感謝努力幫助,我已經成功地在某種程度上有種使其與在此期間笨路線工作。我已經試過你的代碼,並且它有部分工作,語言ID仍然給我帶來問題。我已經決定CI路由是足夠好的...現在:)。再次感謝 –