用于隐藏GET变量的htaccess RewriteRules会停止Javascript xmlhttp.responseText

时间:2013-10-24 14:02:11

标签: javascript php .htaccess url-rewriting xmlhttprequest

我htaccess RewriteRules用于在网址中隐藏GET变量,但它干扰了一个打开的Javascript函数将PHP文件读入div。

htaccess文件如下所示:

 Options +FollowSymLinks -indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]


RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ ?x=$1&z=$2&y=$3&r=$4 [L,NC,QSA]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ ?x=$1&z=$2&y=$3 [L,NC,QSA]

RewriteRule ^([^/]+)/([^/]+)/?$ ?x=$1&z=$2 [NC,L,QSA]

RewriteRule ^([^/]+)/?$ ?x=$1 [L,NC,QSA]

</IfModule>

,Javascript看起来像这样:

    function NextQ(qid, cor, ans, quiz, topic, age, Nm)
    {
            if (qid=="" && qid!="0")
            {
                     document.getElementById("txtHint").innerHTML="hello";
                     return;
            }

            if(age==true)
            {
                    age = document.getElementById("age").value;
            }


            if(Nm==true)
            {
                    Nm = document.getElementById("Nm").value;
            }

            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                    xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                    }
            }
            xmlhttp.open("POST", quiz, true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("qid=" + qid +"&ans="+ans +"&cor="+cor+"&topic="+topic+"&age="+age+"&Nm="+Nm);
    }

javascript基本上POST到iquiz.php(称为测验的变量)并将响应放入Div中。问题是,当RewriteRules生效时,index.php会在Div中开启。

如何阻止这种情况发生?我无法看到Javascript发送的网址是什么。

修改

这源于我在htaccess规则中遇到的一个更大的问题,如果提供了无效的url,index.php会自动打开很多次。

0 个答案:

没有答案