Pregunta

He configurado un yourls.org (servicio de acortamiento de URL) en un servidor VPS de Windows 2003 que tengo, usando ISAPI Rewrite. Ya tengo la reescritura de ISAPI instalada y trabajando con WordPress, así que sé que eso está funcionando. He usado las reglas sugeridas en la página:

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

En mi reescritura isapi, pero las redireccionamientos no funcionan. La página está en bucle, tratando de redirigirse a sí misma.

No estoy familiarizado con las reglas de reescritura, por lo que se agradece cualquier ayuda. Las reglas que he aplicado son:

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

Agregué la tercera línea condicional basada en algo que encontré en el wiki de la aplicación.

Si alguien pudiera arrojar cualquier luz sobre por qué esto no funciona, lo agradecería.

T

¿Fue útil?

Solución

Ok, esto me llevó todo el día, pero lo hice funcionar. Para cualquier persona interesada, no había absolutamente nada de malo en la reescritura de Isapi. El problema estaba en el código. En un archivo llamado YourLS-Loader.php, hay una línea que verifica la URL, la deconstruye y la reconstruye. El problema es que siempre obliga a la nueva URL a HTTPS. Si no tiene certificado de seguridad en su servidor, ¡no funcionará!

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

Se comentan las primeras 2 líneas, esto es lo que fue aquí. Como confío y sé cómo está configurado mi servidor (porque lo hice yo mismo), no siento ninguna necesidad de este sistema de verificación.

Otra cosa a tener en cuenta en un sistema de Windows es que voluntad Debe agregar el análisis sugerido de server_uri al comienzo de este archivo también.

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

Espero que esto ayude a alguien ... me ha llevado todo el día resolver sin soporte en línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top