2009-12-30 82 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