Noticias Weblogs Foros Wiki Código

RecorteX

329 usuarios y 203 recortes de código
Usuario

Contraseña
Crear cuenta
asp csharp css fechas fichero Flash html imagenes java javascript linux mysql oracle php ruby sql SQLServer vbnet xhtml xml
Top Usuarios
albin (29)
josuebasurto (28)
fjmp76 (27)
juanjo (25)
pedrocaro (9)
AndiXTRM (7)
Joserra (7)
miiglesi (6)
aplyca (5)
moisesmarquez (5)
Top Etiquetas
php (38)
html (24)
javascript (20)
vbnet (20)
java (19)
sql (15)
mysql (13)
csharp (12)
xml (10)
css (8)
Flash (7)
xhtml (7)
imagenes (7)
asp (6)
linux (6)
fechas (6)
SQLServer (5)
oracle (5)
fichero (4)
ruby (4)

Cambiar URL cumplejas por URL simples con Mod_Rewrite de Apache

Veremos un ejemplo simple de como utilizar el modulo de apache "Mod_Rewrite", que nos permite crear reglas que serán procesadas por el servidor (siempre que este sea un servidor Linux)

Supongamos que nuestra url actual es de esta forma:
http://www.supagina.com/web/index.php?mod=news&id=2345
Y queremos cambiarla por esta otra:
http://www.mipagina.com/web/noticias/2345.html
Entonces deberíamos crear el directorio "noticias" (sin comillas) y allí subir un archivo .htaccess con la siguiente regla
 
RewriteEngine on 
RewriteBase /web/ 
RewriteRule ^noticias/(.*).html$ index.php?mod=news&id=$1
 
Si quisiéramos darle un poco mas de seguridad podríamos utilizar expresiones regulares más exactas, por ejemplo, que solo se permitan números entre 1 y 6 caracteres
 
RewriteEngine on 
RewriteBase /web/ 
RewriteRule ^noticias/([0-9]{1,6}).html$ index.php?mod=news&id=$1
 
Jugando con expresiones regulares podrás adaptar todas tus URL's complejas a URL's fáciles de recordar.

Vale destacar que con este mismo modulo de apache podremos generar distintas acciones y no solo redireccionar URL, por ejemplo, con una simple línea podríamos denegar el ingreso a un directorio.
Deny from all
 
Esto ultimo se utiliza mucho en, por ejemplo, directorios en donde se guardan los módulos de un sitio, ya que podremos incluir el archivo desde php, pero un extraño no podrá ingresar al archivo tipeando su dirección.
Comentario de juanjo:
Una posibilidad, para no tener que crear un directorio "noticias" vacío, es añadir las líneas (ligeramente modificadas) al .htaccess del nivel superior:
 
RewriteEngine on  
RewriteRule ^web/noticias/([0-9]{1,6}).html$ index.php?mod=news&id=$1
 
Un saludo.
Comentario de FuLaNo_:
Tambien, la idea era dejar en claro que no pueden crearse regla en el nivel "principal", me olvide de remarcarlo.

Gracias por el aporte ;)
Comentario de albin:
¿No está alreves?
Quiero decir estas dos URLs
"Supongamos que nuestra url actual es de esta forma:
http://www.supagina.com/web/index.php?mod=news&id=2345
Y queremos cambiarla por esta otra:
http://www.mipagina.com/web/noticias/2345.html"
Comentario de xoneca:

Se refiere a que tu en el navegador escribes “http://www.mipagina.com/web/noticias/2345.html” y el script lo recibe como si hubieras escrito “http://www.supagina.com/web/index.php?mod=news&id=2345”.

Comentario de xoneca:

Por cierto, hay que tener cuidado con los enlaces relativos (./ ../) ya que el navedador se confunde. Si se está en la página http://mipagina.com/web/noticias/2345.html, el enlace tiene que ser 1000.html (o ./1000.html) y no ./noticias/1000.html u otra cosa…

Identifícate para dejar un comentario.
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin