与许多 Web 开发人员一样,当请求不是针对公共(public)服务目录中存在的文件时,我喜欢使用 .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 不会将指向目录的符号链接(symbolic link)视为目录。它将请求传递到根目录中的 index.php。我想提供链接,就好像它是一个文件夹一样,因为它是一个指向具有自己的 index.php 的文件夹的链接。我可以访问 http://example.com/asymboliclink/index.php通过在浏览器的地址栏中键入它,但我希望能够通过 http://example.com/asymboliclink 访问它
我需要在我的 .htaccess 文件中添加什么才能实现这一点?
最佳答案
使用-l
开关测试符号链接(symbolic link)
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 用于“将 TestString 视为路径名并测试它是否存在,并且是一个符号链接(symbolic link)。”
关于php - 带有符号链接(symbolic link)和索引文件的 .htaccess 配置未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412955/