我使用以下命令删除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/123至http://www.mysite.com/location/123
因为我正在通过重写删除index.php,所以我最终被定向到 -
http://www.mysite.com/location/123?/comments/123/
有谁知道如何解决这个问题?
感谢。
答案 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]
现在只需确保将此规则放在您的其他规则之前。