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