最近換了台 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。
謝謝!
自問自答…
原因很簡單,因為我沒有打開
mod_dir
!mod_dir
中有一个参数叫DirectorySlash
,用於自動在目錄地址後面加上斜線。我之前沒有加載此模組,自然這個功能也不起作用了。
而我覺得時好時壞的原因是有時候我自己打上了斜線。
當初之所以要關閉
mod_dir
,是为了让DirectoryIndex
這個參數失效,這樣可以防止 Apache 自動開啟目錄下的 index.html (本地開發用),結果為自己挖了個坑。其實只要設定
DirectoryIndex disabled
就可以了(2.4 以上才有用)。參考文件