En muchos de mis sitios existe la tradición de hacer redireccionamientos a través de un directorio interno. Parece que el enlace externo a Yandex desde site.ru se ve así:
https://site.ru/out/https://ya.ru
Esta URL redirigirá 301 a https://ya.ru .
En apache hago esto en .htaccess:
RedirectMatch 301 /out/(.*)$ 1.Intentando reescribir para nginx, haciendo eso:
rewrite /out/(.*) $1 permanent;Pero redirige a https://site.ru/ya.ru , no a https://ya.ru .
Agrego esta configuración a my.conf (creé este archivo en /etc/nginx) y hago «include /etc/nginx/my.conf;» (en el servidor{} por supuesto) en todos los archivos conf de mis sitios.
Ayúdenme por favor con la configuración, no puedo resolverlo.(
Parte del problema es que la rewrite usa un URI normalizado que ha plegado múltiples / s consecutivos en un solo / . Es mejor usar la solicitud original que está almacenada en $request_uri .
Una posible solución es utilizar un map para extraer la URL incrustada. Por ejemplo:
map $request_uri $redirect { default 0; ~^/out/(?<out>.*)$ $out; } server { ... if ($redirect) { return 301 $redirect; } ... } Consulte este documento para obtener detalles y esta precaución sobre el uso de if .
Puede lograr lo mismo sin usar un map usando:
if ($request_uri ~ ^/out/(.*)$) { return 301 $1; }