PHP AJAX不能与htaccess一起使用

PHP AJAX不能与htaccess一起使用,php,ajax,.htaccess,Php,Ajax,.htaccess,我为htaccess编写了一个简单的代码,以防止.php扩展。但是从那时起,我的ajax代码就不起作用了。这是我的.htaccess代码 Options -MultiViews RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)\.php$ /$1 [R,L] RewriteRule ^(.*?)/?$ /$1.php [NC,END] 在删除第四行时,ajax起作用了,

我为htaccess编写了一个简单的代码,以防止.php扩展。但是从那时起,我的ajax代码就不起作用了。这是我的.htaccess代码

Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteRule ^(.*?)/?$ /$1.php [NC,END]
在删除第四行时,ajax起作用了,但URL localhost/sample/hello.php和localhost/sample/hello都起作用了!(并非有意如此)

我的示例ajax脚本

$.post('BaseClass.php', {
  action: 'login'
},
我在同一目录中有BaseClass.php文件
提前感谢您的帮助

您的带有.php扩展名的htaccess阻塞请求尝试在没有扩展名的情况下使用它

那样

$.post('BaseClass', {
  action: 'login'
},

就HTTP请求而言,AJAX调用和常规页面请求之间没有区别。唯一的区别是一个由用户完成(常规页面请求),而另一个由浏览器在后台使用JavaScript(AJAX)完成

因此,您不能使用
.htaccess
规则来禁用PHP脚本,而是为AJAX调用启用它们,因为它们实际上是一样的。如果要确保PHP脚本仅作为AJAX调用调用,请检查特定的请求变量(例如,
If(isset($\u POST[“AJAX\u action”]){…}
)。但是要注意:这不是一种安全机制,因为任何人都可以阅读JavaScript源代码并手动发出AJAX请求