Jquery ajax()弄乱了我的.htaccess mod_rewrite

时间:2012-02-16 21:12:33

标签: .htaccess jquery mod-rewrite

我正在使用Jquery执行简单的AJAX()请求(Google托管的是1.7.1 jquery.min.js代码)

代码非常简单:

            $.ajax({
            type: "POST",
            url: "../inc/ajax_msgread_sendPM.php",
            data: "fromuserid=<?php echo $fromuserid; ?>&pmSubject=<?php echo urlencode($pmSubject); ?>&pmBody=" + pmReply,
            success: function(data){
            $("#showSuccess").show("fast");             
            $("#resultResponse").html(data);
            }
        }); 

本文档的mod_rewrite .htaccess是:

RewriteRule ^messages/read/([^/]+)/([^/]+)/?$ /msgread.php?usernam=$1&keynode=$2 [QSA,L]

当我因某种原因查看$ resultResponse时,Ajax一直希望将$ 1变为'inc',因此任何使用URL中$_GET["usernam"]的无关(或相关)mySQL查询都会返回'inc'

为什么会这样?我的脚本和mod_rewrite之间没有关系。脚本(或网站上的任何地方)没有名为“usernam”或“1”的变量。

Firebug没有帮助。

建议吗?

更新:

我在ajax jquery代码中看到问题的来源......

url:“../ inc / ajax_msgread_sendPM.php”,

“inc”一直被设置为用户名,因为它的位置基于mod_rewrite规则......我需要以某种方式将其从mod_rewrite中排除...只是不确定如何解决这个问题

1 个答案:

答案 0 :(得分:1)

只要您网页的当前网址为

www.domain.com/messages/read/username/NQ

并使用相对路径 - 正在将其重写为

www.domain.com/messages/read/username/inc/ajax_msgread_sendPM.php

绝对不是你想要的。最简单的解决方案是将ajax端点URL更改为:

url: "/inc/ajax_msgread_sendPM.php",