使用codeigniter重写URL

时间:2011-01-24 21:17:49

标签: .htaccess mod-rewrite codeigniter url-rewriting

我使用以下命令删除codeigniter中的index.php -

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L] 

我用一个用codeigniter写的新网站替换旧网站,因此我需要将一些旧网址重写为新网址。这适用于单个页面,但是我遇到了以下重写的问题 -

RedirectMatch 301 ^/comments/(.*)/$ /location/$1 

理论上应该将您从以下位置重定向: http://www.mysite.com/comments/123http://www.mysite.com/location/123

因为我正在通过重写删除index.php,所以我最终被定向到 -

http://www.mysite.com/location/123?/comments/123/

有谁知道如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

终于明白了,对于那些感兴趣的人,我不得不在第一篇文章中没有提到的重写条件中添加注释:

RewriteCond $1 !^(index\.php|media|images|css|js|comments|robots\.txt)

希望这可能有助于其他人。

答案 1 :(得分:1)

你不应该混合使用mod_alias(RedirectMatch)和mod_rewrite。请尝试使用此mod_rewrite规则:

RewriteRule ^comments/(.*)/$ /location/$1 [L,R=301]

现在只需确保将此规则放在您的其他规则之前。