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

Mod Rewrite y Directorios

Estas en el tema de Mod Rewrite y Directorios en el foro de Apache en Foros del Web. Tengo una web acabada y estoy transformando los enlaces para hacerlos amigables y tengo un problema que no se como solucionar sencillamente. Tengo varias secciones, ...
  #1 (permalink)  
Antiguo 07/10/2007, 23:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta Mod Rewrite y Directorios

Tengo una web acabada y estoy transformando los enlaces para hacerlos amigables y tengo un problema que no se como solucionar sencillamente.

Tengo varias secciones, y un menú para acceder a cada una de ellas:

/noticias - /clasificacion - /opciones

Digamos que puedo ver al detalles una noticia en concreto, con una URL como esta:
/noticias/33

Bien, una vez dentro de esta página, cada enlace del menú apunta ahora a:

/noticias/noticias - /noticias/clasificacion - /noticias/opciones


Se como solucionarlo, de hecho he tenido que hacer algo parecido para que /noticias/33 encontrase los archivos CSS, imagenes y demás:
Código:
RewriteRule ^noticias/([0-9]+)					index.php?modo=noticias&action=ver&id=$1 [L]
RewriteRule ^noticias/plantillas/(.*)\.css$		plantillas/$1.css [L,NC]
RewriteRule ^noticias/css/(.*)\.css$			css/$1.css [L,NC]
RewriteRule ^noticias/img/(.*)$					img/$1 [L,NC]
Esta solución, aunque funciona, para el caso que expongo lo veo un poco "pesado". Que ocurre si genero mas "directorios" falsos como /noticias ?
Ejemplo:
/noticias/editar/33
/noticias/eliminar/33
/noticias/comentar/33

Para acceder a /opciones, deberia escribir una regla para que desde cada uno de estos directorios funcionasen:
/noticias/editar/options
/noticias/eliminar/options
/noticias/comentar/options

La verdad no veo que sea muy comodo hacer esto... imagino que cometo algún error conceptual en alguna parte...
Por si ayuda, mi archivo .htaccess:
Código:
RewriteEngine On
Options +FollowSymLinks

RewriteRule ^\.htaccess$ - [F]

######	NOTICIAS	#######
RewriteRule ^noticias$							index.php?modo=noticias [L,NC]
RewriteRule ^RSS_noticias						rss.php [L,NC]

RewriteRule ^noticias/([0-9]+)					index.php?modo=noticias&action=ver&id=$1 [L]
RewriteRule ^noticias/plantillas/(.*)\.css$		plantillas/$1.css [L,NC]
RewriteRule ^noticias/css/(.*)\.css$			css/$1.css [L,NC]
RewriteRule ^noticias/img/(.*)$					img/$1 [L,NC]
  #2 (permalink)  
Antiguo 08/10/2007, 01:28
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años
Puntos: 48
Re: Mod Rewrite y Directorios

Si en el codigo HTML de tu pagina pones /opciones como ruta en tus enlaces (con el / inicial) no deberia darte ningun problema. Si no pones el / inicial es cuando te deberia pasar.
  #3 (permalink)  
Antiguo 08/10/2007, 01:32
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: Mod Rewrite y Directorios

Ya lo he probado pero ocurre que si todo está alojado en:
http://localhost/pagina/

Entonces al poner como tu dices /opciones, se me va a buscar:
http://localhost/opciones

Cuando deberia ser:
http://localhost/pagina/opciones

He probado definiendo la propiedad Base url (o algo asi, ya no lo recuerdo) como /pagina, pero entonces dejan de funcionar todos los enlaces.
  #4 (permalink)  
Antiguo 08/10/2007, 01:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años
Puntos: 48
Re: Mod Rewrite y Directorios

Pues entonces pon /pagina/opciones

El tema es que mientras tengas esas urls amigables, vas a tener el problema con las URLs relativas. La solucion es poner URLs absolutas. Incluso usando ../opciones vas a tener problemas.

Si la unica razon de que este en localhost/pagina es que estas desarrollandola, pero que esta pensada para subir a la raiz de un dominio, entonces lo mejor es simular esa situacion creando un virtual host. De esa forma podras cargarte el /pagina/.
  #5 (permalink)  
Antiguo 08/10/2007, 01:59
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: Mod Rewrite y Directorios

Efectivamente está en ese directorio por motivos de desarrollo, posteriormente lo subiré a la raíz de un domino.

En ese caso probaré creando un virtual host, ya contaré si se soluciona el tema.

Muchas gracias DarkJ
  #6 (permalink)  
Antiguo 14/02/2008, 19:15
Avatar de leopardix
(Desactivado)
 
Fecha de Ingreso: diciembre-2003
Mensajes: 91
Antigüedad: 20 años, 11 meses
Puntos: 0
Re: Mod Rewrite y Directorios

Hola. Una pregunta clinisbut ¿encontraste solución?
Yo tengo un problema similar. Resulta que estoy creando una web con unos 100 subdirectorios y he generado una regla de re-escritura.


Código PHP:
RewriteEngine on
AddType application
/x-httpd-php .xml
RewriteRule directorio1
/(.*)_(.*)$ ../directorio1/index.php?cat_id=$1&name=$2
RewriteRule directorio2
/(.*)_(.*)$ ../directorio2/index.php?cat_id=$1&name=$
La regla funciona pero me volveré loco si creo más subdirectorios y para cada uno tengo que escribir la regla en el .htaccess. ¿Alguna sugerencia?
  #7 (permalink)  
Antiguo 25/05/2008, 03:56
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Mod Rewrite y Directorios

Hola!
Sí, al final si que encontré solucion y fue creando un host en el fichero hosts de windows (uso windows) y poniendo un '/' delante de cada enlace de mi página.

El problema es que ahora, después de un año me encuentro con el mismo problema, ya que estoy usando una instalación de windows diferente y no conservo el fichero hosts que en su día me creé. De hecho por eso estoy aquí, para ver si en su día expliqué como lo solucioné, pero veo que no... ;P
  #8 (permalink)  
Antiguo 25/05/2008, 04:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Mod Rewrite y Directorios

Bueno despues de buscar un rato encontré un viejo email en el que explicaba como hacerlo.

Se trata de crear un virtual host en apache.

Abrimos el fichero httpd.conf y abajo del todo escribimos:

NameVirtualHost *:80>
<VirtualHost *:80>
DocumentRoot "C:\DIRECTORIO\www"
ServerName localhost
</Virtualhost>
<VirtualHost *:80>
DocumentRoot "C:\DIRECTORIO\www\OTRO_DIRECTORIO"
ServerName MI_PAGINA_WEB
</VirtualHost>

En mi fichero httpd.conf hay dos lineas abajo del todo que incluyen dos ficheros más. Este codigo lo he tenido que escribir antes de esas dos lineas, si no no funcionaba.

Luego hay que crear un alias en el fichero hosts de windows:
C:\Windows\system32\drives\etc\hosts
Lo editamos con el bloc de notas mismo y creamos una nueva entrada:

127.0.0.1 localhost
127.0.0.1 MI_PAGINA_WEB

Lo ultimo es como ya he dicho antes, colocar un '/' delante de cada enlace mostrado en nuestra pagina, asi como las urls a los archivos Javascript, CSs, imagenes, etc..
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 09:28.