Estoy usando una regla de reescritura similar a las descritas en mod_rewrite: eliminar la barra inclinada final (¡solo una!) . Necesito modificar esto, pero no estoy seguro de cómo hacerlo.
Mi sitio web está alojado detrás de una distribución CloudFront. CloudFront está configurado con el nombre de dominio público (por ejemplo, mywebsite.com). El origen se configura utilizando el nombre de host del servidor (por ejemplo, websiteinternal.com). Cuando se envía una solicitud a algo como https://mywebsite.com/foo/ , el navegador se redirige a https://websiteinternal.com/foo . Esto se debe a que cuando CloudFront reenvía la solicitud al origen, establece el encabezado del Host en https://websiteinternal.com . Luego, la regla de reescritura establece el encabezado de Location en https://websiteinternal.com/foo en la respuesta 302.
Encontré Quitar la barra inclinada final en .htaccess para el uso de CloudFront , pero la solución codifica el nombre de host en el encabezado Location . Esto no funciona porque tengo varios entornos inferiores con diferentes nombres de dominio.
(En caso de que se esté preguntando por qué no reenvío el encabezado del Host al origen, no puedo hacerlo en mi caso, por razones que están fuera del alcance de esta pregunta).
¿Cómo puedo modificar la regla de reescritura para establecer solo el encabezado de Location en la ruta deseada, sin el nombre de host? Quiero configurarlo en /foo, no en https://websiteinternal.com/foo . Esto debería resultar en una solicitud a https://mywebsite.com/foo/ siendo redirigido a https://mywebsite.com/foo .
He intentado las siguientes y menores variaciones, sin suerte. El servidor nunca envía una respuesta 302.
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(https?://[^/]+)/(.+[^/])/$ /$2 [R=302,L]