.htaccess 导致 Ajax 出现问题
我使用以下 Javascript 代码将线程标记为最喜欢的:
function fave(tid){
xmlhttp = createXHR();
if(xmlhttp){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
get("fave"+tid).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "thread?act=fave&tid="+tid+"&ajax=1", true);
xmlhttp.send(null);
}
}
我的 .htaccess 文件包含此行 RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L]
,将 /thread?tid=1234
变成更漂亮的 /thread/1234
。
对于第一个 URL,一切正常,但 /thread/1234
会导致错误。 点击带下划线的链接返回:
响应 HTML 是整个页面的副本! 为什么同一个文档的唯一区别是 /thread?tid=1234
和 /thread/1234
URL 的行为方式不同?
更新:
RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L,QSA]
改进的.htaccess行解决了这个问题。
I use this Javascript code to mark threads as favourite:
function fave(tid){
xmlhttp = createXHR();
if(xmlhttp){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
get("fave"+tid).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "thread?act=fave&tid="+tid+"&ajax=1", true);
xmlhttp.send(null);
}
}
My .htaccess file contains this line RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L]
, which turns /thread?tid=1234
in more pretty /thread/1234
.
With the first URL everything works fine, but /thread/1234
causes an error.
Click on the underlined link returns:
Response HTML is a copy of a whole page!
Why the same document with the only difference between /thread?tid=1234
and /thread/1234
URLs behaves in different ways?
UPDATE:
RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L,QSA]
The improved .htaccess line solved the problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试在 htaccess 中使用 [QSA] 修饰符。
乍一看,您的问题是重写 URL 后不会附加 ajax=1 和 act=fave 值。
所以 RewriteRule 应该是:
然后你的代码:
Try using the [QSA] modifier in your htaccess.
At the first look, your problem is that the ajax=1 and act=fave values do not get appended after rewriting the URL.
So the RewriteRule should be:
And then your code:
在 PHP 中捕获 AJAX 事件一定有问题 - 尝试 var_dump GET vars ...我认为你会错过“ajax 标识符”:)
There must be problem within capturing the AJAX event in PHP - try to var_dump the GET vars ... I think that you will miss "the ajax identifier" :)