与许多Web开发人员一样,当请求不是针对公共服务目录中存在的文件时,我喜欢使用.htaccess通过单个入口点将所有流量定向到域。
这样的事情:
RewriteEngine On
# enable symbolic links
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) index.php [L]
这意味着如果请求不是针对css文件或图像,我的index.php会获取请求,我可以选择做什么(提供一些内容或者可能是404)
效果很好,但我偶然发现了一个似乎无法帮助我解决的问题。
我的文档根目录如下:
asymboliclink -> /somewhere/else
css
.htaccess
img
includes
index.php
然而,Apache没有将目录的符号链接看作目录。它将请求传递给root中的index.php。我希望将链接作为文件夹提供,因为它是指向具有自己index.php的文件夹的链接。我可以通过在浏览器的地址栏中输入http://example.com/asymboliclink/index.php来访问http://example.com/asymboliclink,但我希望能够通过{{3}}
访问它我需要将哪些内容添加到我的.htaccess文件才能实现此目的?
答案 0 :(得分:18)
使用-l
开关测试符号链接
RewriteEngine On
# enable symbolic links
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+) index.php [L]
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html - ctrl + f for“将TestString视为路径名并测试它是否存在,并且是一个符号链接。”
答案 1 :(得分: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]