错误500或重写规则以获取干净的URL

时间:2012-02-10 21:25:52

标签: .htaccess mod-rewrite redirect

.htaccess中使用以下重写规则时,我一直收到500内部服务器错误:

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

基本上,我想在我的网络应用程序上使用干净的网址,即 www.example.com/login 的功能与 www.example.com/index.php/login

此重写规则在MAMP和其他Apache测试服务器上本地工作正常,但在客户端的基于1and1.com的主机上失败。

2 个答案:

答案 0 :(得分:2)

RewriteRule ^(?!index\.php).*$ index.php/$0 [L,QSA]

你需要阻止无限循环。对index.php的否定断言是阻止这种情况的一种方法。

答案 1 :(得分:0)

我实际上在CodeIgniter forum找到了答案。

它没有修复我的规则,而是采用了稍微不同的方式:

Options -MultiViews
RewriteEngine on
RewriteBase /dev
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) index.php/$1 [L]