2009-12-30 35 views
0

好吧,所以我不能告訴這是一個服務器問題還是什麼。我有一個htaccess文件,像這樣:301重定向在codeigniter

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/main/index/$1 [L] 
RewriteRule ^ajax/(.*)$ /index.php?/main/ajax/$1 [L] 
RewriteRule ^backend.php/(.*)$ /backend.php?/$1 [L] 

# 301 redirects 
Redirect 301 /backup.php http://www.example.com/backup/ 
Redirect 301 /document.php http://www.example.com/document/ 
Redirect 301 /contact.php http://www.example.com/contact/ 
Redirect 301 /links.php http://www.example.com/links/ 
Redirect 301 /jobs.php http://www.example.com/jobs/ 

我唯一的問題是與我的301個重定向。而不是

example.com/backup.php轉到example.com/backup/而是將它發送到example.com/backup/?/main/index/backup.php。

這確實能夠正確地路由頁面。這意味着我得到正確的HTML返回,但網址是醜陋的。我應該說,這是代碼點火器做,我是路由一切交給控制器的方法指數這使得備份,文檔,聯繫人等指數方法的第一個參數。這可能看起來很奇怪 - 也可能沒有關聯 - 但我需要它是這樣的。任何人有任何建議如何讓重定向的URL清潔?

回答

3

使用mod_alias和mod_rewrite並不是一個好主意。試試這個的mod_rewrite規則,而不是你Redirect指令並把它放在你目前的規則面前:

RewriteRule ^(backup|document|contact|links|jobs)\.php$ http://www.example.com/$1/ [L,R=301] 
+0

有趣......實際上航線/backup.php到/backup.php導致404錯誤。 :(任何其他的想法? – ocergynohtna 2009-12-30 12:55:51

+0

@ocergynohtna:你真的把這個規則作爲你的規則集的第一條規則嗎? – Gumbo 2009-12-30 13:03:35

+0

我已經在底部,我有301的最初,它移動到頂部解決了這個問題。 ! – ocergynohtna 2009-12-30 13:17:04