Comunidad de diseño web y desarrollo en internet online

url amigable con mod_rewrite

Citar            
MensajeEscrito el 07 May 2012 07:10 pm
hola muchachos vengo con una pregunta q ya me trae loca, estoy haciendo mi sitio web y quiero utilizar el mod_rewrite para asignar url amigables, el problema es que ya no hayo como configurar mi archivo htaccses para que me ande a la perfeccion porque como lo tengo actualmente me anda bien aveces pero otras veces no y no entiendo por q O.o

Código :

RewriteEngine On
RewriteRule ^([a-zA-Z]+)/?$ cartelera.php?t=$1 [NC]
RewriteRule ^([a-zA-Z]+)/([1-9]+)/?$ cartelera.php?t=$1&page=$2 [NC]
RewriteRule ^([a-zA-Z]+)/([1-9]+)/([a-z-]+)/?$ cartelera.php?t=$1&pid=$2&link=$3 [NC]
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ cartelera.php?t=$1&query=$2 [NC]
RewriteRule ^css_cole/([a-zA-Z]+).css$ css_cole/style.css.php?link=$1 [NC]


el problema se da mas que todo luego de agregar la tercera linea (( RewriteRule ^([a-zA-Z]+)/([1-9]+)/([a-z-]+)/?$ cartelera.php?t=$1&pid=$2&link=$3 [NC] )) , es que cuando doy clic sobre los vinculos en mi web algunos me los muestra pero otros simplemente me dan un error 404 O.o por fa alguien que me pueda ayudar :'( no se si sea que no le puedo colocar muchas reglas a un mismo archivo pero la verdad ya no se como hacerle, agradezco toda la ayuda que me puedan dar

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 07 May 2012 08:26 pm
Bueno, hay un par de cosas que te estám jodiendo la vida a simple vista.

Primero, no debería entrar a las reescrituras si la URL apunta a un archivo o directorio que sí existe físicamente en el servidor, como el caso de los archivos .css y .js que puedas usar, para ello, luego de RewriteEngine On y antes del primer RewriteRule deberías poner:

Código :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Esto básicamente quiere decir que si NO es un archivo y NO es un directorio, continuar...

Luego estás usando el flag [NC] en todas las reescrituras, lo cual está bien, pero además deberías indicar que si se cumple con una reescritura no continúe con las siguientes. Así que agrega el flag L, además de NC. O sea debes cambiar [NC] por [NC,L]

Para que lo sepas NC significa que la regla se evalua insensible a mayúsculas y minúsculas, mientras que L significa que es la última si verifica verdadero.

Si sabes inglés, puedes leer esto:
http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.