指向 PHP 文件的符号链接未作为 PHP 处理

指向 PHP 文件的符号链接未作为 PHP 处理

我在 Ubuntu 14.04 服务器上安装了 PHP5,它运行良好。我在文档树中的任意位置创建了一个名为 foo.php 的文件,它会像您期望的那样传递给 PHP 解释器。

但是...我不希望 .php 扩展名在特定情况下可见,因此我使用“ln -s foo.php foo”创建了一个符号链接。如果我转到http://localhost/path/to/foo.php然后 PHP 就可以正常工作了,但是当我去http://localhost/路径/to/foo然后我看到了 PHP 源代码。

我猜这是因为 /etc/apache2/mods-enabled/php5.conf 中的 SetHandler 指令在<FilesMatch>指令中,而我的文件名不是以“.php”结尾,但我已启用 FollowSymlinks,因此我以为这无关紧要。我猜是有关系的。

我知道我可以使用 mod_rewrite 进行内部重定向,但这有点太麻烦了。我也可以使用 Redirect,但这会将重定向推回到客户端,而我想避免这种情况。

那么有没有一种简单的方法可以告诉 Apache“跟随符号链接,然后根据找到的文件进行自动类型判断”?

答案1

看着http://httpd.apache.org/docs/2.4/mod/core.html#options它说

即使服务器遵循符号链接,它也不会改变用于匹配<Directory>部分的路径名。

我想匹配部分也是一样<Files>,所以无法做到。不过,这很接近了:-

<Location "/path/to/foo">
  SetHandler x-foo-handler
  Action x-foo-handler /path/to/foo.php virtual
</Location>

相关内容