PHP AJAX无法与htaccess一起使用

时间:2018-08-04 18:48:14

标签: 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起作用了,但是localhost / sample / hello.php和localhost / sample / hello这两个URL都起作用了! (因为这不是故意的)

我的示例ajax脚本

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

我在同一目录中有BaseClass.php文件 感谢您的提前帮助

2 个答案:

答案 0 :(得分:0)

您的带有.php扩展名的htaccess阻止请求尝试使用不带扩展名的请求

喜欢

NA

答案 1 :(得分:0)

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

因此,您不能使用.htaccess规则来禁用PHP脚本,但可以对AJAX调用启用它们,因为它们实际上是同一回事。如果要确保仅将PHP脚本作为AJAX调用来调用,请检查特定的请求变量(例如if (isset($_POST["ajax_action"])) { ... })。但要注意:这不是一种安全机制,因为任何人都可以阅读JavaScript源代码并手动提出AJAX请求。