2013-05-16 141 views
0

我用htaccess得到了這個問題。我使用CodeIgniter,並從鏈接中刪除'index.php':htaccess CodeIgniter中的RewriteRule

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 

RewriteRule ^(.*)$ /index.php/$1 [L] 

這很好用。

但現在,我有一個較舊的網絡,像這樣舊的鏈接:

http://www.example.com/index.php/about_us/article/70,about-us

他們被谷歌索引。我想將它們重定向到新的鏈接結構。

我需要改變htaccess的,所以上面的鏈接重定向到看起來像這樣的鏈接:

http://www.example.com/en/about_us/70,about-us

的「的index.php」被刪除,這就是確定。 '文章'並不總是顯示在鏈接中,只是在某些鏈接中,但它始終是一個段。 我必須在所有的前面添加'en'(lang)。

我該怎麼做?

回答

0

試試這些;

的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 
RewriteRule ^en/(.*)$ /index.php/$1 [L] 

routes.php文件

$route["about_us/(:any)"] = "about_us/article/$1"; 

有關URL路由的詳細信息: URI Routing

+0

但在網絡語言是隻有在谷歌郎不存在。所以我會得到雙重像郎鹹平: EN/EN/... 和擊潰我得到了改寫globaly原因「about_us」只是dinamicly產生sgements MENY之一。 所以我nead東西只與htacces和重寫condisions我gues – user2389059

+0

我沒有得到你想要的 – rcpayan

+0

努普。這並不是那麼簡單。我只有谷歌鏈接whant被重定向。在網絡中的鏈接是可以的,他們就像現在一樣工作。 – user2389059

0

這應該讓你接近(未經測試,只是放在一起你) 。您可能需要調整第一條規則,以檢查en細分受衆羣是否存在,因爲如果存在,您最終將在重定向的網址中添加雙打。

RewriteEngine On 

# Redirect any URI's starting with "index.php" to new URI 
RewriteRule ^index.php/(.*)$ http://www.example.com/en/$1 [R=301,L] 

# Route URI's to index.php front controller 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 
RewriteRule ^(.*)$ index.php/$1 [QSA,L]