Redirecciones temporales (302, 307) en un sitio estático, actualizado con frecuencia

Redirecciones temporales (302, 307) en un sitio estático, actualizado con frecuencia

Fondo opcional (para evitar el problema XY):Estoy trabajando en un sitio estático que contendrá URL como www.example.com/książka/. El problema con esas URL es que cuando las compartes/pegas en un programa de mensajería instantánea, etc., los caracteres diacríticos se expanden %<hex>y se vuelven ilegibles: www.example.com/ksi%C4%85%C5%BCka/. Entonces estoy considerando lo siguiente:

  • establecer la URL canónica de la página como www.example.com/ksiazka/("ąż" reemplazada por "az")
  • devolviendo una redirección temporal (HTTP 302 o 307) a www.example.com/książka/.

Lo que no funcionará:

Reescritura automática de direcciones. Motivo: No vamos a pasar de "ąż" a "az", sino de "az" a "ąż" o tal vez a "ąz", o "aż", o "áz", o una de muchas otras posibilidades. Las redirecciones deben generarse durante la generación de la página, cuando conocemos la lista completa de páginas existentes, por lo que sabemos que "ksiazka" debe redirigir a "książka" y no a "książką".

Necesito configurar 1 redireccionamiento HTTP por página. Necesitaré una nueva redirección HTTP cada vez que suba un artículo nuevo.

Editar la configuración de NGINX requiere acceso de root y estoy implementando el sitio con permisos de usuario normal. En Apache, podría agregar algunas directivas en .htaccess, pero esto es problemático para el rendimiento y no es posible para NGINX.

Aparte de eso, podría crear una inclusión /etc/nginx/sites-available/mysitepara extraer el contenido de /home/myuser/mysite/_redirects. Entonces el servidor leería un archivo controlado por un usuario normal. El inconveniente es que le daría al usuario habitual acceso a todas las opciones de configuración de NGINX, mientras que yo sólo necesito configurar redirecciones.

Para solucionar esto, tal vez podría escribir una pieza de automatización que lea un archivo cargado por el usuario y que contenga solo la información necesaria para las redirecciones. Algo así como el _redirectsarchivo en Netlify. Pero esto se siente... mal. Demasiado personalizado.

Recordar:

  • Sitio estático
  • Se necesita HTTP 302 o HTTP 307
  • Actualizaciones frecuentes (edición manual /etc/nginxno factible)
  • Archivos cargados como usuario del sistema sin privilegios
  • No darle a ese usuario demasiado poder sobre el servidor web.

¿Cuál sería una buena forma de hacer esto en NGINX?

información relacionada