Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!