通过htaccess删除.php扩展名后,查询字符串URL导致500内部错误


Query string URL prduces 500 internal error after removing .php extension through htaccess

使用根目录上的.htaccess文件,我使用下面的代码-从url中删除了.php扩展名

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?foobar.com$
RewriteCond %{REQUEST_URI} !^/foobar/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /foobar/$1
RewriteCond %{HTTP_HOST} ^(www.)?foobar.com$
RewriteRule ^(/)?$ foobar/index.php [L]
RewriteRule ^([^'.]+)$ $1.php [NC,L]

我在htaccess中有上面的代码。但是当ajax调用如下时-

foobar.com/user/get/?a=getTaggedUsers&forumId=368

这会产生500内部服务器错误。

如果我删除.htaccess文件中的最后一行,即-

RewriteRule ^([^'.]+)$ $1.php [NC,L]

然后上面的查询字符串url就可以正常工作了。但现在我不得不把.php扩展名也放在url中。那么,如何使查询字符串在没有php扩展的情况下工作呢?

拥有这样的代码:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www'.)?foobar'.com$
RewriteCond %{REQUEST_URI} !^/foobar/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ foobar/$1 [L]
RewriteCond %{HTTP_HOST} ^(www.)?foobar'.com$
RewriteRule ^/?$ foobar/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f [NC]
RewriteRule ^([^.]+)/?$ $1.php [L]