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

Bajarle un nivel de directorio a una url

Estas en el tema de Bajarle un nivel de directorio a una url en el foro de Apache en Foros del Web. Hola. Estoy tratando de entender los mod_rewrite. con la dichosa guía de apache http://httpd.apache.org/docs/2.0/misc/rewriteguide.html Pero en los ejemplos parece que les cobran por letra... No ...
  #1 (permalink)  
Antiguo 07/11/2011, 07:58
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Bajarle un nivel de directorio a una url

Hola.
Estoy tratando de entender los mod_rewrite. con la dichosa guía de apache http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

Pero en los ejemplos parece que les cobran por letra... No están claros para los nobs.

Mi caso. Mi sitio normalmente lo pongo en una carpeta llamada WebSite.
example.com/WebSite

ya que además del sitio web público, tengo otras carpetas fuera, por ejemplo:
example.com/Experimentos

A partir de ahí tengo mis otras carpetas, ya del sitio, por ejemplo
example.com/WebSite/QuienSoy

Bueno, para fines prácticos y de seo, quisiera que al teclear
example.com/QuienSoy se entre correctamente a la url. O sea que se desaparezca WebSite/.

No precisamente quiero cambiar la root del website, ya que si no ya no podría entrar a la carpeta Experimentos/.

Leyendo más ya hasta me preocupó el abuso del .htacces así que ya no sé ni que tengo que ponerle dentro.

¿Me conviene? y si sí ¿que debe decir?
  #2 (permalink)  
Antiguo 07/11/2011, 10:00
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 6 meses
Puntos: 140
Respuesta: Bajarle un nivel de directorio a una url

Esto del mod_rewrite creo que es más intuición que ciencia, o al menos así me lo da a entender la dispersa información que he encontrado. En mi opinión, es una herramienta útil e indispensable y que debemos usar, y a falta de conocimientos exactos, mediante prueba y error, almenos así lo he hecho yo!
Aunque estoy convencido que se puede hacer lo que comentas, nunca lo he hecho por lo que no te puedo dar un respuesta que sepa que funcione, pero creo que el secreto está en el uso de RewriteCond. Si como condición pones que la url no puede ser la carpeta de experimentos, cuando entres a esta carpeta no te debería aplicar la regla:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/Experimentos/)
RewriteRule ^(.+) website/$1 [NC, L]

No estoy muy seguro de la sintaxis, por eso. Otra opción es usar como condición que el fichero o directorio exista o no exista, creo que se hace con: !-f, -f, (is a regular file) !-F o -F (existing file). O bien con !-d o -d para referirse a directorios, o -U o !-U (existing url).

Esto de la -f es algo que alguna vez encontré por ahí, ahora buscando he encontrado la siguiente página donde explican algo sobre esto: http://www.askapache.info//2.3/mod/m...ml#rewritecond
Suerte!
  #3 (permalink)  
Antiguo 08/11/2011, 08:05
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Bajarle un nivel de directorio a una url

@Rafael

tu enunciado me genera algunas dudas, cual es el document_root ó raiz de tu web?

/htdocs (podría ser /public_html o /www )ó
/WebSite

y sea el primero ó el segundo, acceder a carpetas por fuera de el desde el navegador NO se puede ( a menos que leas contenido con php u otro lenguaje del lado del server, ó en otro ejempo, que algún .htaccess tenga definida alguna ruta a un .htpasswd)

Mod_Rewrite no es para nada intuitivo, más bien te diría que es como una fórmula matemática.
con respecto a
Cita:
Bueno, para fines prácticos y de seo, quisiera que al teclear
example.com/QuienSoy se entre correctamente a la url. O sea que se desaparezca WebSite/.
bueno, lo realmente práctico sería que tu aplicación este en

/QuienSoy (siendo /, la raíz)

De todas maneras, podés hacer esto
Código Apache:
Ver original
  1. Options -Indexes +FollowSymLinks
  2. RewriteEngine On
  3. RewriteCond %{SCRIPT_FILENAME} !-d  
  4. RewriteCond %{SCRIPT_FILENAME} !-f
  5. RewriteRule ^QuienSoy$ /WebSite/QuienSoy/

Siempre y cuando, insisto, que WebSite sea una carpeta dentro de la raiz, y no la raiz en si misma


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 08/11/2011 a las 08:18
  #4 (permalink)  
Antiguo 08/11/2011, 17:01
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Bajarle un nivel de directorio a una url

Gracias a ambos. Ando revisando el link Charly.

Emprear, si, WebSite es una carpeta dentro de htdocs. Por el momento mo puedo tener las secciones de la web en la raiz como tal, porque hay como 2 Gb de carpetas que ya te imaginarás que desorden hay ahí adentro.

Voy a estudiar el código que pusiste, y a experimentar un poco, ver que hacen las condicionantes y eso.
Gracias otra vez.

Edito... a seguir estudiando las expresiones regulares...

Etiquetas: directorio, html, nivel, rewrite, url
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 15:41.