legacy-redirect: dejar en paz /.well-known/

fea-legacy-redirect manda al archivo cualquier 404, y eso incluia /.well-known/,
que nunca fue contenido de Joomla: son rutas de protocolo (retos de Let's
Encrypt, security.txt, change-password). Lo encontro el Claude de Inma mirando
por que no se emitian los certificados.

No es lo que bloquea los certificados. El reto de LE va por el puerto 80 y ahi
lo atiende Traefik, que lo intercepta antes de llegar a WordPress y no lo
redirige a HTTPS: se ve en que el 404 del puerto 80 viene vacio y sin cabecera
server, mientras cualquier otra ruta da 302. La configuracion lo confirma,
httpchallenge.entrypoint=http. Los certificados no salen porque Traefik no ha
reintentado desde las 10:44, cuando el DNS aun apuntaba a CDMON.

Pero el redirect estaba mal igualmente, y es una trampa para mas adelante: si
algun dia el reto llegara por el 443 (DNS-01 no, pero un cambio de entrypoint o
un renovador distinto si), este 301 lo tumbaria y el certificado no se
renovaria sin que nadie entendiera por que.

Comprobado que lo demas sigue igual: las URLs viejas de Joomla y los 404
genuinos siguen yendo al archivo, y /es sigue llevando a la home.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 07:34:23 -04:00
parent 585984cfe2
commit 4f91d68996
2 changed files with 10 additions and 1 deletions
@@ -12,6 +12,15 @@ add_action('template_redirect', function () {
$path = untrailingslashit(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
// /.well-known/ nunca fue contenido de Joomla: son rutas de protocolo
// (retos de Let's Encrypt, security.txt, change-password...). Mandarlas al
// archivo es incorrecto y ademas peligroso: si algun dia el reto de ACME
// llegara por el 443 en vez de por el 80, este redirect lo tumbaria y el
// certificado no se renovaria. Lo encontro el Claude de Inma el 3-ago.
if (strpos($path, '/.well-known/') === 0 || $path === '/.well-known') {
return;
}
// La antigua home de Joomla (con prefijo de idioma /es/) debe llevar a
// la home nueva, no a la web antigua.
if ($path === '/es') {