防止htaccess影响ajax文件请求

防止htaccess影响ajax文件请求,ajax,.htaccess,Ajax,.htaccess,在我的.htaccess文件中,我有一些用于干净URL的重写规则,我还需要在我的网页中调用AJAX。由于重写规则,我在ajax文件请求方面遇到了问题。以下是我的htaccess文件内容: Options -MultiViews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteBase /~mavili/loran/orders/ RewriteRul

在我的
.htaccess
文件中,我有一些用于干净URL的重写规则,我还需要在我的网页中调用AJAX。由于重写规则,我在ajax文件请求方面遇到了问题。以下是我的htaccess文件内容:

Options -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteBase /~mavili/loran/orders/
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
当我这样做的时候:

$.ajax({
    type: 'get',
    url: 'http://domain.com/misc/page.php',
    success: function(data) {
        $('#load_content').html(data);
    },
    error: function() {
       $('#load_content').html('Error: Unable to load file.');
    }
});

请求
http://domain.com/misc/page.php
通过htaccess重写规则,将一切都搞糟。有没有办法防止AJAX调用通过htaccess设置?

让AJAX请求跳过规则的一种方法是在URL中粘贴一个虚拟查询参数,例如:

$.ajax({
    type: 'get',
    url: 'http://domain.com/misc/page.php&skip=1',
    success: function(data) {
        $('#load_content').html(data);
    },
    error: function() {
       $('#load_content').html('Error: Unable to load file.');
    }
});
并使用如下重写规则跳过具有
?skip=1
查询参数的所有请求:

Options -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{QUERY_STRING} !^skip=1$
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

使Ajax请求跳过规则的一种方法是在URL中粘贴一个虚拟查询参数,例如:

$.ajax({
    type: 'get',
    url: 'http://domain.com/misc/page.php&skip=1',
    success: function(data) {
        $('#load_content').html(data);
    },
    error: function() {
       $('#load_content').html('Error: Unable to load file.');
    }
});
并使用如下重写规则跳过具有
?skip=1
查询参数的所有请求:

Options -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{QUERY_STRING} !^skip=1$
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

不幸的是,事实并非如此。AJAX调用与任何其他web连接一样,只是处理它们的方式不同。您需要修改htaccess以忽略特定的文件夹或文件,以便不中断Ajax调用。htaccess控制您的应用程序,所有请求都通过.htaccess文件规则。你必须换一种方式思考。我建议那些投反对票的人阅读下面的答案。不幸的是,不是真的。AJAX调用与任何其他web连接一样,只是处理它们的方式不同。您需要修改htaccess以忽略特定的文件夹或文件,以便不中断Ajax调用。htaccess控制您的应用程序,所有请求都通过.htaccess文件规则。你必须换一种方式思考。我建议那些投反对票的人阅读下面的答案。