.htaccess配置符号链接和索引文件无法按预期工作

poo*_*odl 14 php apache .htaccess symlink

像许多Web开发人员一样,当请求不是针对公共服务目录中存在的文件时,我喜欢使用.htaccess通过单个入口点将所有流量定向到域.

所以像这样:

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

这意味着如果请求不是针对css文件或图像,我的index.php会获取请求,我可以选择要做什么(提供一些内容或者可能是404)

效果很好,但我偶然发现了一个似乎无法帮助我解决的问题.

我的文档根看起来像这样:

asymboliclink -> /somewhere/else
css
.htaccess
img
includes
index.php
Run Code Online (Sandbox Code Playgroud)

但是,Apache没有将目录的符号链接看作目录.它将请求传递给root中的index.php.我希望将链接作为文件夹提供,因为它是指向具有自己index.php的文件夹的链接.我可以通过在浏览器的地址栏中输入来访问http://example.com/asymboliclink/index.php,但我希望能够通过http://example.com/asymboliclink访问它

我需要将哪些内容添加到我的.htaccess文件中才能实现此目的?

Jas*_*son 20

使用-l开关测试符号链接

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

文档

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html - ctrl + f for"将TestString视为路径名并测试它是否存在,并且是一个符号链接."


Mic*_*nan 13

-l标志引用符号链接

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