Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
Apache 2.4 RewriteRule solo funciona con nombre de dominio

Estoy moviendo un sitio antiguo de apache 2.2 a 2.4

Tengo un archivo vhost.conf que contiene la siguiente regla de reescritura:

 RewriteRule ^/news/[0-9]{4}/[A-za-z]{3}/([0-9a-zA-Z-]*)/([0-9]{4})([0-9]{6})/?$ "/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" [NE,L]

Así que estoy tratando de convertir esta URL: https://example.com/news/2016/Feb/Article-Title/0025012345

en esto: https://example.com/news/article.cfm?article_id=012345&urltitle=Article-Title&clk=0025

Dependiendo de lo que ponga en la segunda parte de RewriteRule, obtengo lo siguiente:

"https://example.com/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" esto funciona bien, pero no quiero especificar el nombre de host, ya que se usa en los servidores dev/staging/live, entonces las URL cambian

"/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" arroja un 404 que aparece en access_log

"news/article.cfm?article_id=$3&urltitle=$1&clk=$2" arroja un 503 que aparece en access_log

Así que sé que estoy identificando correctamente la URL en la primera parte de la regla y tomando los componentes correctos con mi expresión regular, ya que especificar el nombre de dominio completo muestra la manipulación correcta de la URL.

Sin embargo, estoy fallando por completo en hacer una redirección relativa, y estoy seguro de que esta regla funciona en Apache 2.2

Estoy usando el siguiente software:

Versión de CentOS Linux 7.7.1908 (núcleo)

Versión del servidor: Apache/2.4.6 (CentOS) Servidor creado: 8 de agosto de 2019 11:41:18

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Obviamente, la respuesta está en el manual... que debería haber leído con más detalle:

https://httpd.apache.org/docs/2.4/rewrite/remapping.html#viejo-a-nuevo

Supongamos que recientemente cambiamos el nombre de la página foo.html a bar.html y ahora queremos proporcionar la URL anterior para compatibilidad con versiones anteriores. Sin embargo, queremos que los usuarios de la antigua URL ni siquiera reconozcan que se cambió el nombre de las páginas; es decir, no queremos que la dirección cambie en su navegador.

 RewriteEngine on RewriteRule "^/foo\.html$" "/bar.html" [PT]

La clave aquí es el [PT] , que lo arregló para mí:

 RewriteRule ^/news/[0-9]{4}/[A-za-z]{3}/([0-9a-zA-Z-]*)/([0-9]{4})([0-9]{6})/?$ "/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" [PT,NE,L]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda