防止htaccess影响ajax文件请求

时间:2014-08-21 12:38:25

标签: ajax .htaccess

我的.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设置?

1 个答案:

答案 0 :(得分:3)

使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]