Php AJAX与URL重写

Php AJAX与URL重写,php,ajax,.htaccess,url-rewriting,Php,Ajax,.htaccess,Url Rewriting,我有一个HTTPAccess文件apache服务器,我正在进行以下url重写: RewriteRule questionnaire/adminpassword questionnaire/change_admin_password.php 在我的javascript文件中,我正在进行AJAX调用,如下所示: $.ajax({ type: 'POST', cache:false, url: 'change_admin_password.php',

我有一个HTTPAccess文件apache服务器,我正在进行以下url重写:

RewriteRule questionnaire/adminpassword questionnaire/change_admin_password.php
在我的javascript文件中,我正在进行AJAX调用,如下所示:

 $.ajax({
       type: 'POST',
       cache:false,
       url: 'change_admin_password.php',
       data: {'currentPassword':currentPassword, 'newPassword': newPassword},
       dataType: 'html',
       success:function(response){
        alert(response);              
       },
      error:function(){
      alert("error");
      }
   });             

我将ajax调用中的url更改为:url:'adminpassword',但是现在调用会重新加载页面并获取其内容,而不是在服务器上运行php脚本并给出响应。我做错什么了吗?谢谢

您知道,如果只使用“adminpassword”,您将获得一个相对路径。确保当前路径正确,否则使用完整路径,可能是“问卷调查/管理员密码”

尝试直接访问URL。在浏览器中键入它。你得到了什么?你是否得到了预期的回应?然后使用chromedevtools或firebug等工具检查ajax调用发出的实际请求。请求是否命中了正确的URL


如果你找到了正确的URL,问题可能出在服务器上。

我知道这是一个老问题,但我想我知道这里发生了什么,这可能会在将来帮助其他人

当您使用questionly/adminpassword时,您的.htaccess文件将其转换为questionly/change_admin_password.php,我猜您正在将所有访问站点的请求重定向到根文件夹中的index.php文件,该文件处理url,并要求特定文件添加页眉和页脚,在发出ajax请求时也一样

为了避免重定向到处理该文件的索引文件,您可以完全避免这种情况,方法是允许直接访问.htaccess文件中的特定文件夹,如下所示


重写cond%{REQUEST_FILENAME}/api其中api是javascript调用的脚本所在的文件夹

如果发出get请求,您会遇到同样的问题?是,get也会遇到同样的问题