2011-03-23 36 views
10

Al igual que muchos desarrolladores web, me gusta usar .htaccess para dirigir todo el tráfico a un dominio a través de un único punto de entrada cuando la solicitud no es para un archivo que existe en el directorio servido públicamente..htaccess config con enlaces simbólicos y archivos de índice que no funcionan como se esperaba

Así que algo como esto:

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+) index.php [L] 

Esto significa que si la solicitud no es para un archivo CSS o una imagen, mi index.php recibe la petición y puedo elegir qué hacer (servir un poco contenido o tal vez un 404)

Funciona muy bien, pero me he topado con un problema que parece no poder ayudarme a resolverlo.

Mi raíz del documento es el siguiente:

asymboliclink -> /somewhere/else 
css 
.htaccess 
img 
includes 
index.php 

embargo, Apache no ve el enlace simbólico a un directorio como un directorio. Pasa la solicitud a mi index.php en la raíz. Quiero servir el enlace como si fuera una carpeta, ya que es un enlace a una carpeta con su propio index.php. Puedo tener acceso a http://example.com/asymboliclink/index.php escribiéndola en la barra de direcciones del navegador, pero yo quiero ser capaz de acceder a él a través http://example.com/asymboliclink

¿Qué necesito para añadir a mi archivo .htaccess para que esto suceda?

Respuesta

17

Utilice el interruptor -l para probar un enlace simbólico

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+) index.php [L] 

Documentación

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html - Ctrl + F para "Se usa para tratar la TestString como un nombre de ruta y prueba si existe o no, y es un enlace simbólico ".

12

Las referencias -l bandera enlaces simbólicos

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+) index.php [L] 
Cuestiones relacionadas