-1

我已经使用 ISAPI 重写在我拥有的 Windows 2003 VPS 服务器上设置了 yourls.org(URL 缩短服务)。我已经安装了 ISAPI rewrite 并使用 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 中找到的内容添加了第三条条件行。

如果有人能解释为什么这不起作用,我将不胜感激。

4

1 回答 1

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'] );

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

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

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

我希望这对某人有所帮助...在没有在线支持的情况下,我花了一整天的时间来解决。

于 2011-02-03T23:26:05.293 回答