Mod_rewrite使用相对URL导致AJAX请求失败

时间:2014-09-19 15:25:09

标签: jquery ajax .htaccess mod-rewrite

尽管我之前发现过有类似问题的帖子,但我想提出一个问题,我现在已经困扰了好几个小时但似乎无法解决。

在网站上,其网址由mod重写模块重写:

www.domain.com/index.php?page=one

变为

www.domain.com/one/

我正在使用JQUERY和相对网址>>>>

发出AJAX请求
$.get('views/ajax_page.php', { }, function(data) {
    alert(data);
});

显然没问题,只要浏览器地址栏中的网址是www.domain.com,但是当GET变量'页面'如果不为null,则脚本无法找到文件ajax_page.php并抛出AJAX错误" 404 not found"。

我知道我可以通过在AJAX请求中使用绝对URL来解决这个问题,但是因为当访问者在键入网站时省略了协议时,同源策略会导致浏览器抛出HTTP错误0在地址栏中的地址,这也不是水密的。

解决上述任何一个问题的最佳方法是什么,或者更好的是,两者兼而有之? 非常感谢您的支持。

2 个答案:

答案 0 :(得分:2)

是您网站根目录下的文件夹视图吗?

如果是这样,请在视图前添加斜杠:

$.get('/views/ajax_page.php', { },

function(data) {

alert(data);

});

如果没有,我建议用你的ajax请求调用当前页面并设法在你的后端调用ajax文件......

此外,请确保您的htaccess在重定向之前访问文件:

# if a directory or a file exists, use it directly

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

答案 1 :(得分:0)

使用相对路径时,将base tag添加到您的html网站标题总是明智的:

<base href='http://www.your-site-address-here.com'/>