Noticias Weblogs Código

RecorteX

685 usuarios y 240 recortes de código
Usuario

Contraseña
Crear cuenta
asp csharp css fechas Flash html imagenes java javascript linux mysql oracle php sql SQLServer url vbnet web xhtml xml
Top Usuarios
fjmp76 (36)
albin (31)
josuebasurto (31)
juanjo (30)
pedrocaro (9)
stanz (8)
AndiXTRM (7)
Joserra (7)
miiglesi (6)
aplyca (5)
Top Etiquetas
php (38)
vbnet (27)
javascript (26)
html (25)
java (24)
csharp (18)
sql (18)
xml (13)
mysql (13)
css (10)
imagenes (7)
xhtml (7)
Flash (7)
asp (6)
fechas (6)
linux (6)
web (5)
SQLServer (5)
oracle (5)
url (5)

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…

Comentario de makanaki:

Hola, tengo un problemilla y aver si alguien me puede echar una mano, se trata de lo siguiente:
Se trata de que salga siempre la misma url, es decir que si estoy visitando http://localhost/rutaabsoluta/sub1/texto.php que se vea solo http://localhost/rutaabsoluta lo que quiero es ke este en la parte de la web en la ue que esté siempre me muestre la misma url, ya he estado mirando en foros y demás pero no encuentro nada, solo que use frames pero asi no es como quiero acerlo, esto es lo que mas se acerca a lo que estoy buscando.
Tambien he visto algo que sepuede hacer hacer con el proxy de apache pero no logro hacer que funcione nada.
Gracias, y espero respondan prondo, se lo agradecería mmucho. :)

Identifícate para dejar un comentario.
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin - Información legal y técnica