Foros del Web » Administración de Sistemas » Apache »

Problema con RewriteRule

Estas en el tema de Problema con RewriteRule en el foro de Apache en Foros del Web. Hola de nuevo! A ver si me pueden echar un cable con este tema Iré al grano y tratare de ser lo mas breve y ...
  #1 (permalink)  
Antiguo 04/03/2014, 06:30
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Problema con RewriteRule

Hola de nuevo!
A ver si me pueden echar un cable con este tema

Iré al grano y tratare de ser lo mas breve y conciso posible para no liar demasiado el tema:

Tengo una pagina llamada "archivo.php" a la que si la paso una variable GET "?id_archivo=23" pues hace la consulta a la BD y me muestra dicho archivo.

La url quedaría de la siguiente forma:
http://www.mipaginaweb.com/archivo.php?id_archivo=23

Hasta aquí todo ok.

Mi problema llega al tratar de hacer la URL anterior AMIGABLE.
Quisiera que las URL AMIGABLES quedasen de la siguiente forma:

http://www.mipaginaweb.com/23/Titulo-de-archivo

Por lo que he configurado un .htaccess de la siguiente forma:

Código:
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^([0-9]+)/(.+)$ archivo.php?id_archivo=$1

</IfModule>
De esta forma, cada vez que pongo en el navegador "http://www.mipaginaweb.com/23/Titulo-de-archivo" me esta mostrando en realidad la pagina "archivo.php?..."

El problema esta en que no coge bien las referencias!!!! por ejemplo a los CSS...

En la pagina "archivo.php" tengo el siguiente codigo:

Código:
ç
............................
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/basic-style.css">
...........................
Y si entro asi "http://www.mipaginaweb.com/archivo.php?id_archivo=23" evidentemente muestra bien la pagina con su css correcto... y todo OK...
Pero si entro asi "http://www.mipaginaweb.com/23/Titulo-de-archivo" me carga la pagina "archivo.php" obtengo bien el "id_archivo" etc.... pero los CSS no me los muestra bien, porque en realidad esta interpretando que estan en "/23/css/normalize.css" en vez de "css/normalize.css"


Espero haberme explicado bien jeje
A ver si me pueden aconsejar como hacerlo...
Gracias.
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 04/03/2014, 07:07
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Problema con RewriteRule

Código htaccess:
Ver original
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. RewriteRule ^([0-9]+)/(.+)$ archivo.php?id_archivo=$1
  5.  
  6.     <filesmatch ".(jpg|JPG|gif|GIF|png|PNG|css|CSS|ico|ICO|js|JS|svg|SVG|eot|EOT|json|JSON|ttf|TTF|woff|WOFF|txt|TXT)$">
  7.         RewriteEngine Off
  8.     </filesmatch>
  9.  
  10. </IfModule>

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 04/03/2014, 08:02
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Problema con RewriteRule

1) RewriteRule es una directiva del módulo rewrite de Apache, por lo tanto PHP no es el foro correcto.

2) La solución que propone portalmana no es válida ya que RewriteEngine no se aplica a archivos.

3) En mi opinión, lo mejor que puedes hacer es usar URLs absolutas.

Saludos
  #4 (permalink)  
Antiguo 04/03/2014, 09:08
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con RewriteRule

Gracias por la respuesta portalmana, pero no me funciono.

Al final... tras mucho leer, di con otra solución que también me vale.

El siguiente codigo, es para URLs amigables con el siguiente formato: www.mipaginaweb.com/22-titulo-del-articulo en donde el 22 ocupa el lugar del ID seguido de un guion "-" y despues el titulo.

Código:
`<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)$ archive.php?id=$1

</IfModule>
__________________
Follow me on twitter @franbedia
  #5 (permalink)  
Antiguo 04/03/2014, 09:13
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Problema con RewriteRule

mmmm
que raro yo tengo un .htaccess con esa directiva y funciona perfectamente es decir me deja cargar todos los archivos del tipo mencionado.
Si saco dicha directiva no me los carga.
Código htaccess:
Ver original
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. RewriteCond %(REQUEST_FILENAME) !-d
  5. RewriteCond %(REQUEST_FILENAME) !-f
  6. RewriteCond %(REQUEST_FILENAME) !-l
  7.  
  8. RewriteRule ^(.*)$ index.php?urlAgenor=$1 [QSA,L]
  9.  
  10.     <filesmatch ".(jpg|JPG|gif|GIF|png|PNG|css|CSS|ico|ICO|js|JS|svg|SVG|eot|EOT|json|JSON|ttf|TTF|woff|WOFF|txt|TXT)$">
  11.         RewriteEngine Off
  12.     </filesmatch>
  13. </IfModule>

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #6 (permalink)  
Antiguo 04/03/2014, 09:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con RewriteRule

Yo también tengo la misma duda, ¿por qué preguntar algo que nada tiene que ver con programación PHP en el foro de PHP?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 04/03/2014, 10:27
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con RewriteRule

ok ok! que puntillosos! no me di cuenta... supongo que lo postee aquí porque estaba con un proyecto php y vine acá sin pensarlo demasiado.

Ademas... hay que dar trabajo a los moderadores ;)
__________________
Follow me on twitter @franbedia

Etiquetas: php, rewriterule, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:33.