Проблема с перенаправлениями yourls.org на Windows 2003 с перезаписью ISAPI

Я настроил yourls.org (сервис сокращения URL) на сервере Windows 2003 VPS, который у меня есть, используя перезапись ISAPI. У меня уже есть переписанный 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]

Я добавил третью условную строку, основываясь на том, что нашел в вики приложения.

Если бы кто-нибудь мог пролить свет на то, почему это не работает, я был бы признателен.

T

1 ответ

Решение

Хорошо, это заняло у меня весь день, но у меня все получилось. Для всех, кто заинтересовался, в переписывании 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'];
}

Надеюсь, это кому-то поможет... У меня ушёл целый день, чтобы решить без онлайн-поддержки.

Другие вопросы по тегам