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

Includes y URLs amigables con .htaccess

Estas en el tema de Includes y URLs amigables con .htaccess en el foro de Apache en Foros del Web. Hola a todos. Les comento mi situación: Estuve revisando éste tutorial http://www.web2.0facil.com/2007/10/19/includes-con-php/ para hacer mi web más liviana con los includes en PHP. Básicamente, mi ...
  #1 (permalink)  
Antiguo 20/05/2009, 17:57
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Includes y URLs amigables con .htaccess

Hola a todos.
Les comento mi situación: Estuve revisando éste tutorial http://www.web2.0facil.com/2007/10/19/includes-con-php/ para hacer mi web más liviana con los includes en PHP. Básicamente, mi web es igual a la que se da como ejemplo en el tutorial, con la diferencia de que yo tengo subcarpetas. Para ser más específico: yo tengo una carpeta donde está toda mi web, en la misma está index.php, contacto.php y otros, pero además, en esa misma carpeta root, tengo subcarpetas en las cuales hay más arhcivos PHP dentro.
El tema de los includes no me trajo problemas, pero sí tengo inconvenientes con el archivo .htaccess y las URL amigables. En el tutorial que ya mencioné, el autor escribe líneas como esta:
RewriteRule ^item1$ index.php?go=1&title=Item_1 [L]
Es decir, cambia la URL compleja (www.misitio.com/index.php?go=1&title=Item_1) por una más sencilla (www.misitio.com/item1), y en el menú de la página, enlaza a cada sección de esta forma:
<li><a <?php if($_GET[’go’]==1){echo ‘class=”activo”‘;}?> href=”item1“>ITEM 1</a></li>
O sea, hace un a href a la URL amigable (item1).
Pero yo quiero que mis URL amigables queden así: www.misitio.com/subcarpeta/seccion.php (como si no existieran los includes y fuera una web en HTML); para lograr eso, tendría que escribir en el .htaccess algo así:
RewriteRule ^subcarpeta/seccion.php$ index.php?go=1&title=Sección [L]
Y enlazar a ese archivo, desde el menú, de esta forma:
<li><a <?php if($_GET[’go’]==1){echo ‘class=”activo”‘;}?> href=”subcarpeta/seccion.php“>SECCION</a></li>
(todo eso lo afirmo basándome en el tutorial que dije)
El problema es que al realizar eso, el navegador intentará buscar la carpeta subcarpeta y dentro de ella buscar el archivo seccion.php, sin tener en cuenta lo hecho en el archivo .htaccess. He probado también que el href se dirija a index.php?go=1&title=Sección, pero en ese caso no aparece la URL amigable, sino la compleja. He leído que para que la URL amigable termine en una extensión debo agregar \.php al final, pero de todas formas sigo teniendo el problema.
También me gustaría saber si es conveniente realizar estas URL amigables o no, ya qu etengo muchísimas secciones y temo que al ser tan grande el .htaccess el servidor demore más tiempo.
Espero haberme explicado bien, si alguien no comprende, que lo diga.

Última edición por RabidFish; 20/05/2009 a las 18:15
  #2 (permalink)  
Antiguo 20/05/2009, 18:42
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Includes y URLs amigables con .htaccess

Para lo que deseas tienes que usar RewriteCond.

Y no es tema de PHP, es de Apache.

Tienes que hacer:
Cita:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Tu regla
Eso le dice que si el archivo existe o el directorio, no aplique la regla.
  #3 (permalink)  
Antiguo 20/05/2009, 19:04
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Includes y URLs amigables con .htaccess

Hola Ronruby, gracias por responder.
Tienes razón en cuanto al subforo, me di cuenta de que había uno de Apache luego de haber posteado el mensaje, así que si algún moderador ve esto, que lo mueva.
En cuanto a tu respuesta, me gustaría asegurarme si he entendido bien. Me dices que en el fichero .htaccess coloque algo como esto:
Cita:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^inicio.php$ index.php?go=0 [L]
RewriteRule ^subcarpeta/seccion.php$ index.php?go=1&title=Sección [L]
...y al vínculo en el archivo PHP poner href=subcarpeta/seccion.php?
Porque si es así, ya he probado y sigo en la misma situación que antes.
De todas forma sno estoy seguro si has entendido bien cuál es mi problema. Yo lo que quiero es que una URL como esta: www.misitio.com/index.php?go=1&title=Sección se vea así www.misitio.com/subcarpeta/seccion.php, usando un menú que realiza includes. En mi opinión, el problema está en el enlace que me queda href="subcarpeta/seccion.php", ya que busca ese archivo en vez de hacer el include. Si hago algo como href="subcarpeta-seccion" (y en el .htaccess pongo RewriteRule ^subcarpeta-seccion$ index.php?go=1&title=Sección [L]), allí si funciona, pero la URL resultante es www.misitio.com/subcarpeta-seccion y no es lo que busco.
Saludos.

Última edición por RabidFish; 20/05/2009 a las 19:13
  #4 (permalink)  
Antiguo 20/05/2009, 19:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Includes y URLs amigables con .htaccess

RewriteCond solo funciona para la regla que esta debajo de esta. Solo 1.
  #5 (permalink)  
Antiguo 20/05/2009, 22:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Includes y URLs amigables con .htaccess

Referencia:
http://www.askapache.com/htaccess/ul...le-sample.html
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 21/05/2009, 09:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Includes y URLs amigables con .htaccess

Tema trasladado desde PHP
  #7 (permalink)  
Antiguo 21/05/2009, 10:41
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Includes y URLs amigables con .htaccess

Gracias por la ayuda, pero creo que aún no me entiendes. No quiero condicionar mi regla del .htaccess, al contrario, quiero que siepre se aplique. En el tutorial que mencioné se muestra todo lo que uso: includes, títulos dinámicos y .htaccess. Mi problema, y vuelvo a repetir lo mismo que antes, es que quiero que algo como:
index.php?go=1&title=Sección
se vea así:
subcarpeta/seccion.php
Y para eso pongo en el archivo .htaccess esto:
RewriteEngine On
RewriteRule ^subcarpeta/seccion.php$ index.php?go=1&title=Sección [L]

Donde ^ y $ engloban lo que quiero que se muestre, y lo que está al lado es la ruta original.
El problema, es que para que la URL amigable se genere, debo enlazar desde el documento con el código HTML hacia lo que está entre ^ y $ (en este casi sería subcarpeta/seccion.php). ¿Pero qué pasa? Al hacer ese enlace, me dirige directo a subcarpeta/seccion.php en vez de index.php?go=1&title=Sección. Yo quiero dirigirlo a index.php?go=1&title=Sección pero que en el navegador figure como subcarpeta/seccion.php, ¿me explico?
Lo que tendría que hacer, es indicar de alguna forma que no dirija al archivo seccion.php que está en la carpeta subcarpeta, sino que siga la relga del .htaccess y vaya a index.php?go=1&title=Sección mostrando la URL subcarpeta/seccion.php.
Si yo hago un enlace a "subcarpeta-seccion", en este caso sí funciona porque no hay una barra ni la extensión PHP que obligan a buscar en esa dirección, pero si hago eso se muestra como www.misitio.com/subcarpeta-seccion en vez de www.misitio.com/subcarpeta/seccion.php que es lo que busco.
No sé si se puede lograr o no, tampoco sé cómo se hace, por eso recurro a este foro. Saludos.

Última edición por RabidFish; 21/05/2009 a las 10:54
  #8 (permalink)  
Antiguo 21/05/2009, 20:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Includes y URLs amigables con .htaccess

^subcarpeta/seccion.php$

Escapa el caracter punto:

^subcarpeta/seccion\.php$

Creo que deberia funcionar.
  #9 (permalink)  
Antiguo 24/05/2009, 19:46
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Includes y URLs amigables con .htaccess

Cita:
Iniciado por Ronruby Ver Mensaje
^subcarpeta/seccion.php$

Escapa el caracter punto:

^subcarpeta/seccion\.php$

Creo que deberia funcionar.
Ya lo he probado antes pero no tuve suerte, además no estoy seguro de cómo debería enlazar desde el archivo HTML/PHP a esa ruta... ¿sería <a href="subcarpeta/seccion\.php">Link</a>?
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 04:30.