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

symlink en apache/windows

Estas en el tema de symlink en apache/windows en el foro de Apache en Foros del Web. ¡saludos gentes! ¿alguien sabe si apache soporta enlaces simbólicos en windows xp? he estado buscando información pero no me queda nada claro. la situación que ...
  #1 (permalink)  
Antiguo 18/10/2011, 22:32
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
symlink en apache/windows

¡saludos gentes!

¿alguien sabe si apache soporta enlaces simbólicos en windows xp? he estado buscando información pero no me queda nada claro. la situación que tengo es que estoy trabajando con TextPattern -un cms- y tiene la capacidad de correr multiples sitios web a la vez utilizando una sola instalación. sucede que en este tipo de configuración hay varios archivos que son simbólicos. en las instrucciones indica como configurarlo, el cual lo seguí al pie de la letra. todo instala correctamente, solo que cuando intento accesar a las url que representan el enlace simbólico, en lugar de llevarme al destino final, me muestra el contenido del archivo. por supuesto, tengo configurado en apache la directiva Options +FollowSymLinks. a continuacion las configuraciones. el archivo htaccess no le he tocado nada; esta tal cual vino en la instalación.

Código apache:
Ver original
  1. # httpd.conf
  2. <VirtualHost 127.0.0.1>
  3.     DocumentRoot "x:/path/to/project"
  4.     ServerName project
  5.     <Directory "x:/path/to/project">
  6.         Options +FollowSymLinks
  7.         AllowOverride All
  8.         Order deny,allow
  9.         Allow from all
  10.     </Directory>
  11. </VirtualHost>
  12.  
  13. # .htaccess en el directorio project
  14. #DirectoryIndex index.php index.html
  15.  
  16. #Options +FollowSymLinks
  17. #Options -Indexes
  18. #ErrorDocument 403 default
  19.  
  20. <IfModule mod_rewrite.c>
  21.     RewriteEngine On
  22.     #RewriteBase /relative/web/path/
  23.  
  24.     RewriteCond %{REQUEST_FILENAME} -f [OR]
  25.     RewriteCond %{REQUEST_FILENAME} -d
  26.     RewriteRule ^(.+) - [PT,L]
  27.  
  28.     RewriteCond %{REQUEST_URI} !=/favicon.ico
  29.     RewriteRule ^(.*) index.php
  30.  
  31.     RewriteCond %{HTTP:Authorization}  !^$
  32.     RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
  33. </IfModule>
  34.  
  35. #php_value register_globals 0

entre los resultados de la busqueda, encontre un caso de una persona que instaló apache en windows xp y tuvo el problema de que los symlinks no funcionaban. en fin, la solución que encontro fue creando Alias a los directorios. no me gusta esa solución, aparte de que no se impacto tendría en el cms. ¿alguien tiene alguna idea sobre que sucede?

@edit: por cierto, leí por ahí que el filesystem de windows no soporta symlinks como lo haria *nix. no hasta la version Vista que soporta algo similar llamado Junctions. ese detalle ya lo sé, de todos modos el tema va más en el aspecto de apache.

gracias por cualquier comentario.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 18/10/2011 a las 22:54
  #2 (permalink)  
Antiguo 19/10/2011, 10:28
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: symlink en apache/windows

bueno, continuando con la busqueda he logrado recaudar algunos detalles, además de dar con posibles soluciones. los symlinks en windows simplemente no van a funcionar bajo apache porque no es algo que lo implementa apache, sino el sistema operativo; entonces apache toma ventaja de dicha característica. por el momento pude dar con dos soluciones pero depende de cada caso: Alias con RewriteEngine, o AliasMatch.

Código:
<root>
├───files
├───images
├───recycle
├───rpc
├───sites
│   └───project
│       ├───admin    #virtual_host
│       ├───private
│       └───public    #virtual_host
│           ├───files
│           └───images
└───textpattern
    ├───include
    │   └───import
    ├───lang
    ├───lib
    ├───publish
    ├───setup
    ├───theme
    │   ├───classic
    │   └───remora
    ├───tmp
    ├───txp_img
    └───update
dado dicha estructura de directorios donde dos de ellos son VirtualHost -la parte administrativa y pública-, admin contiene archivos symlinks que hacen referencia a recursos en el directorio textpattern. lo que hice fue eliminar los symlinks y declarar un Alias tal que Alias "/core" "<root>/txp/textpattern". luego un htaccess en admin.

Código apache:
Ver original
  1. <IfModule mod_rewrite.c>
  2.     RewriteEngine On
  3.  
  4.     RewriteCond %{REQUEST_FILENAME} !-f
  5.     RewriteRule ^(.+) /core/$1 [PT]
  6. </IfModule>

la otra solución, con AliasMatch, simplemente pareo la URL con el directorio núcleo con la única excepción si la url apunta a index.php ya que es el único archivo dentro de admin.
Código:
	AliasMatch ^/(?!index\.php)(.+) <root>/txp/textpattern/$1
en conclusión, aún no sé cual es la mejor alternativa. al menos por el momento ambas me funcionan. por suerte en este caso todos los symlinks apuntan al mismo directorio.

gracias a todos los que leyeron e intentaron buscar una solución.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 19/10/2011, 11:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: symlink en apache/windows

Si no dejaste ni 7 horas de diferencia para buscar Acabo de ver el mensaje y quise buscar sin ver la segunda respuesta y vi que no va a funcionar symlink en window. Bueno ya veo que te contestaste jejeje
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 20/10/2011, 10:57
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: symlink en apache/windows

al final con la ayuda de @razpeitia pude encontrar una solución más sencilla para windows xp (ntfs). especificamente usando directorios tipo Junctions -con un programa del mismo nombre- para crear symlink de las carpetas. por desgracia no trabaja con archivos normales. para ese caso utilice hardlink con el comando fsutil. me sirve para los dos tipos de configuración del cms sin tener que cambiar mucho, solo eliminar los symlinks que vienen ya creados.

sin embargo, usando la técnica de rewrite_engine tuve un problema que no entendí porque me sucedía. en particular, la url en el navegador me cambiaba aún si en el rewrite no indicaba el flag de redirección [R]. no se si se debe a que estaba usando un Alias a un directorio que no estaba dentro del enterno de DocumentRoot.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: htaccess, html, php, rewrite, url, virtual
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 20:29.