问题描述
最近换了台 Mac,配 Apache 的时候发生了一点诡异的情况。
比如说我本地的目录是 ~/Work/app/a/b,我将 www.test.com 指向了本地 ~/Work 这个目录,那么访问 http://www.test.com/app/a/b 是没有问题的。
但是当我把 Options Indexes 打开之后,打开 http://www.test.com/app/a/,可以看到列出 b 目录,然后我点击它,网址居然跳到 http://www.test.com/app/b 去了!注意,直接用绝对路径打开是正常的,并不会跳转(因此我感觉并不像权限问题)。
我看了看根目录下的 .htaccess,并没有看出什么端倪。把 mod_rewrite 注释掉也没什么作用。
奇怪的是,我的 app 下有很多目录,但并不是每一个都会出现情况。我试图找找其中的共性,好像就只有一点:发生回跳的目录(文件)都处于目录的最后一个层级。
不知各位有没有碰见过这种情况,我的 Apache 版本是 Yosemite 自带的 2.4.10。
谢谢!
问题解答
回答1:自问自答……
原因很简单,因为我没有打开 mod_dir !mod_dir 中有一个参数叫 DirectorySlash,用于自动在目录地址后面加斜杠。我之前没有加载此模块,自然这个功能也不起作用了。而我觉得时好时坏的原因是有时候我自己打上了斜杠。
当初之所以要关闭 mod_dir,是为了让 DirectoryIndex 这个参数失效,这样可以防止 Apache 自动打开目录下的 index.html (本地开发用),结果给自己挖了个坑。其实只要设置 DirectoryIndex disabled 就可以了(2.4 以上才有用)。
参考文档