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

.htaccess 错误500或重写规则以获取干净的URL,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,在我的.htaccess中使用以下重写规则时,我不断收到500个内部服务器错误: RewriteRule ^(.*)$ index.php/$1 [L,QSA] 本质上,我希望我的web应用程序上有干净的URL,即www.example.com/login的功能与www.example.com/index.php/login相同 此重写规则在本地MAMP和其他Apache测试服务器上运行良好,但在客户端的1和1.com主机上失败 RewriteRule ^(?!index\.php).*$ i

在我的
.htaccess
中使用以下重写规则时,我不断收到500个内部服务器错误:

RewriteRule ^(.*)$ index.php/$1 [L,QSA]
本质上,我希望我的web应用程序上有干净的URL,即www.example.com/login的功能与www.example.com/index.php/login相同

此重写规则在本地MAMP和其他Apache测试服务器上运行良好,但在客户端的1和1.com主机上失败

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

您需要防止无限循环。在
index.php
上的否定断言是阻止这种情况发生的一种方法。

我实际上在网站上找到了答案

它并没有修正我的规则,而是用了一种稍微不同的方式:

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

我不确定我是否喜欢否定断言,但它节省了一秒钟的时间。我应该调查一下+1让我意识到他们的存在:-)