Javascript评级栏不适用于modrewrite网址

时间:2009-08-10 02:21:11

标签: php javascript .htaccess mod-rewrite

在我的脚本中,此函数部分构建链接:

if ($type == "mod_rewrite") {
    $prepend = "";
    $append = ".html";

} else if ($type == "query_string") {
        $prepend = 'index.php?params=';
        $append = "/";
}
//
//
//
    $gamelink = 'game/id/gamename' (example)
    /* 'game' is a fixed string.  
        'id' and 'gamename' are variables) */

我的.htacess如下:

RewriteEngine on
RewriteRule  ^(.*)\.html$ index.php?params=$1 [NC,L]

问题:

我在游戏页面中有一个ajax评级栏,它在查询字符串模式下完美运行:

(在这个例子中:gamename ='Arm Copter'和gameid ='3')

游戏链接:

http://localhost/gss/index.php?params=game/3/Arm-Copter/

评级链接(鼠标悬停星星图片)

http://localhost/gss/plugins/ajax_star_rater/db.php?j=10&q=arm_copter&t=127.0.0.1&c=10

使用ModRewrite: 游戏链接:

http://localhost/gss/game/3/Arm-Copter.html

评级链接(星星缺失,仅显示与星星对应的数字):

http://localhost/gss/game/3/plugins/ajax_star_rater/db.php?j=10&q=arm_copter&t=127.0.0.1&c=10

这里的问题似乎是插入了url part'game / id /',因为db.php的正确路径是:

http://localhost/gss/plugins/ajax_star_rater/db.php

而不是:

http://localhost/gss/**game/3/**plugins/ajax_star_rater/db.php

我花了两天时间搜索和测试各种方法,但我没有找到解决方案。我需要一个不重写ajax评级栏或重写正确路径的规则。

问候,

初级高级 - 巴西。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:你必须编辑rating.js -

function sndReq(vote,id_num,ip_num,units) {
var theUL = document.getElementById('unit_ul'+id_num); // the UL

// switch UL with a loading div
theUL.innerHTML = '<div class="loading"></div>';

xmlhttp.open('get', 'rpc.php?j='+vote+'&q='+id_num+'&t='+ip_num+'&c='+units);
xmlhttp.onreadystatechange = handleResponse;
xmlhttp.send(null); 
}

您需要更改此行:

xmlhttp.open('get', '../../rpc.php?j='+vote+'&q='+id_num+'&t='+ip_num+'&c='+units); 

rpc.php之前的部分需要为../../

答案 1 :(得分:0)

在调用插件(http://localhost/gss/game/3/plugins/ajax_star_rater/db.php)的评级链接的html中,您可能正在使用当前文件夹中的相对路径,听起来您需要使用相对于根文件夹的路径。

而不是:

<a href="plugins/ajax_star_rater/db.php">Rate me!</a>

您需要使用/添加启动链接并写入脚本的完整路径:

<a href="/gss/plugins/ajax_star_rater/db.php">Rate me!</a>

希望有所帮助。