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

165
Views
Use Apache para reescribir URL con parámetros de base de datos como URL agradables

Durante años, nuestros sitios web basados en bases de datos han tenido direcciones URL que se parecen a: https://www.example.com/product?id=30

Pero hoy en día, y especialmente para fines de SEO, queremos que nuestras URL sean "agradables" y se vean como: https://www.example.com/30/myproduct

Usamos Zope 2.13.x ejecutándose en Debian y usando Apache 2.4 como servidor web front-end. Sé que no mucha gente usa Zope, pero al utilizar mod_rewrite de Apache, deberíamos poder enviar la reescritura por proxy y tener buenas URL que aún pasen los argumentos de la base de datos necesarios para servir correctamente las páginas a los usuarios finales.

Solía haber un libro de cocina de Zope en el que escribí un montón de tutoriales realmente detallados sobre la funcionalidad de Zope, pero parece que ya no existe y quería compartirlo con la comunidad de SE.

Lo increíble es que esto no es específico de Zope, pero funcionará/debería funcionar con cualquier reescritura de una URL basada en parámetros en una URL agradable y es muy fácil una vez que todo funciona.

Para una total transparencia, voy a responder mi propia pregunta para que quede documentada para todos.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Usando el motor de reescritura en Apache, decida cómo quiere que sus URL se vean para el usuario final en su navegador web.

Por ejemplo, si está llamando a una base de datos y tiene una URL que se parece a

https://www.example.com/products?id=30&product_name=myproduct

pero quieres que esa URL se vea como

https://www.ejemplo.com/productos/30/miproducto

usaría una regla de reescritura de la siguiente manera:

 RewriteRule ^/products/(.*)/(.*) /products?id=$1&product_name=$2 [L,P,NE,QSA]

Para explicar eso más:

^/products/(.*)/(.*) dice que cada vez que se accede a domain.com/products, busque dos variables en los siguientes nombres de directorio, es decir, /(.*)/(.*)

Si solo quisiera una variable, haría ^/products/(.*)

Del mismo modo, si quisiera tres variables, haría ^/products/(.*)/(.*)/(.*)

A partir de ahí, debemos decirle a Apache cómo interpretar esa URL para reescribir y aún permitir que Zope (o cualquier base de datos que esté usando) pase los parámetros de URL correctos. Esa parte es:

 /products?id=$1&product_name=$2

Apache ahora tomará el primer (.*) y lo tratará como $1 . Tomará el segundo (.*) y lo tratará como $2 y así sucesivamente.

La parte entre paréntesis es extremadamente importante.

L = Esto hace que Apache deje de procesar el conjunto de reglas de reescritura si la regla coincide. Esto es importante porque no desea que Apache se confunda y comience a intentar otras reescrituras.

P = Proxy la solicitud. Esto asegura que el navegador no muestre una URL diferente a https://www.example.com/products/30/myproduct (es decir, no queremos que el usuario final vea la URL reescrita como https://www.example.com/products?id=30&product_name=myproduct

NE = Sin caracteres de escape de URL. Necesita esto para asegurarse de que la reescritura de la URL no intente escapar de los caracteres especiales como $ = & , ya que estos son importantes para los parámetros de la URL.

QSA = Esto permite que existan múltiples variables (o parámetros de URL)

Tenga en cuenta: es muy importante considerar cómo desea que se vean sus URL (las URL agradables) porque eso es lo que desea enviar a los motores de búsqueda. Si cambia la estructura de su URL, esas bonitas URL ya no funcionarán y su clasificación en los motores de búsqueda puede disminuir.

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!