使用ISAPI重写的Windows 2003上的yourls.org重定向问题

时间:2011-02-03 17:40:43

标签: iis-6 windows-server-2003 isapi-rewrite yourls

我在使用ISAPI重写的Windows 2003 VPS服务器上设置了yourls.org(URL缩短服务)。我已经安装了ISAPI重写并使用Wordpress,所以我知道这是有效的。我使用了页面中建议的规则:

http://code.google.com/p/yourls/wiki/htaccess

在我的ISAPI重写中,但重定向无法正常工作。页面正在循环,尝试重定向到自身。

我不熟悉重写规则,所以任何帮助都会受到赞赏。我申请的规则是:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (/|\.php|/[^.]*)$  [NC]
RewriteRule ^(.*)$ /yourls-loader.php [L]

我根据我在应用程序的wiki中找到的东西添加了第三个条件行。

如果有人能说清楚为什么这不起作用,我会很感激。

Ť

1 个答案:

答案 0 :(得分:0)

好的,这花了我一整天,但我得到了它的工作。对于任何感兴趣的人来说,ISAPI重写绝对没有错。问题出在代码中。在一个名为yourls-loader.php的文件中,有一行检查url,解构它并重构它。问题是它总是强制新的URL进入https。如果您的服务器上没有安全证书则无法运行!!!

//$scheme = ( isset($_SERVER["HTTPS"]) ? 'https' : 'http' );
//$request = str_replace( YOURLS_SITE.'/', '', $scheme . 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
$request = str_replace( YOURLS_SITE.'/', '', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );

前两行被注释掉了,这就是这里的内容。因为我信任并知道我的服务器是如何设置的(因为我自己做了)我觉得不需要这个检查系统。

在Windows系统上要注意的另一件事是 还必须在此文件的开头添加建议的Server_URI解析。

if (isset($_SERVER['HTTP_X_REWRITE_URL'])){
    $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}

我希望这可以帮助别人...我花了一整天的时间来解决,没有在线支持。