Проблема с перенаправлениями 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'];
}
Надеюсь, это кому-то поможет... У меня ушёл целый день, чтобы решить без онлайн-поддержки.