php - 带有符号链接(symbolic link)和索引文件的 .htaccess 配置未按预期工作

标签 php apache .htaccess symlink

与许多 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/

相关文章:

php - htaccess 基于查询字符串的 url

.htaccess - htaccess SEO 网址

php - 合并 JSON 同时保持键布局

apache - 如何使用非根 url 配置 phabricator?

php - 检查是否存在定义变量-PHP中的警告错误

php - php负载均衡

.htaccess - 如何拒绝除谷歌机器人之外的美国用户?

php - 什么可以用于 PHP 5.2 的 DateTime::diff()?

php - 自定义 PHP 扩展

php - 如何访问 phpMyAdmin?