2013-06-25 84 views
0

我想在移除codeigniter中的index.php後做301重定向。Codeigniter 301重定向index.php

htaccess文件:

RewriteEngine on 

RewriteCond $1 !^(index\.php|images|css|img|js|plugins|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 

在此之後,我添加

RewriteRule /index.php?page=9-someting&txt=12 /page/1/someting#2/other [R=301,L] 

但重定向不起作用任何幫助嗎?

編輯:

/index.php?page=9-someting & TXT = 12,這不是寫在笨

回答

2

移動舊網站你的第二個更加特殊的規則,就是通常的CI的漂亮url的catch-all-and-send-to-index規則。您可能還需要添加NE(因爲不編碼),因爲哈希標記(#)將進行其他編碼。

因此,像這樣:

RewriteEngine on 
# rewrite old site url, has L so processig will stop here for matching requests. 
RewriteCond %{QUERY_STRING} ^page=9-someting&txt=12$ 
RewriteRule index.php /page/1/someting#2/other [R=301,L,NE] 


# request that fall trouhg will be sent to CI's front controller (if they are not images, css....) 
RewriteCond $1 !^(index\.php|images|css|img|js|plugins|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

不工作,如果我把任何東西,除了index.php的一切工作正常。 – Laky

+0

對不起,我剛剛意識到你正試圖在'RewriteRule'行中匹配查詢字符串參數。這不會在那裏工作,因爲'RewriteRules'匹配請求的URL路徑,所以你將不得不使用'RewriteCond'。 – complex857

+0

這可以工作,但有可能在URL重定向後: mysite.com/page/1/someting#2/other?index.php?page=9-someting&txt=12 – Laky

0

試試這個在.htaccess

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L,R=301] 

RewriteCond %{REQUEST_URI} ^application.* 
RewriteRule ^(.*)$ /index.php?/$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,R=301] 
</IfModule> 

RewriteRule ^index.php?page=9-someting&txt=12$ /page/1/someting#2/other [R=301,L] 
+0

不工作,並在CI這條路線後無法正常工作 – Laky