1. 程式人生 > >Apache下使用Alias建立虛擬目錄的問題

Apache下使用Alias建立虛擬目錄的問題

最近在使用wampserver2.0i.exe安裝下的快捷方式WampServer時,發現一個Bug,詳細如下:

本地環境:

windows xp +php+Apache+Mysql

客戶端測試:

IE 360瀏覽器 3.1.1.8

Firefox 3.6

找到客戶端的apache目錄下的Alias directories目錄下的Add an alias,單擊它

進入命令列操作介面,

按照提示:

先輸入虛擬目錄名稱,假設我們輸入kk,enter回車;

再按提示輸入虛擬目錄指向的主目錄檔案位置,假設我們輸入c:/wamp/apps/meas,enter回車

再根據提示,enter回車,命令列視窗自動退出。

這時

可以在wamp資料夾(安裝包所在資料夾,如果是在C盤的話,預設路徑就是'C:/wamp')下的alias資料夾下,找到一個檔案

kk.conf:

內容如下

Alias /kk/ "c:/wamp/apps/meas/"

<Directory "c:/wamp/apps/meas/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>

在ie下測試:

輸入:http://localhost/kk

提示:

Not Found

The requested URL /kk was not found on this server.

再次輸入:http://localhost/kk/,正確執行虛擬目錄下的按照預設檔案優先級別執行設定的優先級別檔案,如index.php

在ff中測試的情況和IE類似。但是對於phpmyadmin來說,就不存在這種情況,這是由於我們使用上述方式產生的.conf檔案內容和phpmyadmin.conf檔案不一致造成的,我們將手動輸入的情況放在最後來討論。

首先這樣調整輸入,在輸入虛擬目錄位置時,我們輸入:c:/wamp/apps/meas/ 也就是多加一個反斜槓,檢視相關檔案發現內容與第一種情況一致,說明反斜槓在不在末尾對檔案內容不產生影響

接著再次調整,將輸入行替換為:c:/wamp/apps/meas,這其實是按照提示進行的正確輸入,之前的輸入也是正確的,因為windows下的檔案目錄就是之前的形式。檢視相關檔案發現內容仍然與之前的相同,說明斜槓的正反對檔案內容也沒有影響

繼續調整,輸入替換為:c:/wamp/apps/meas/,檢視相關檔案,發現內容仍然一致,說明末尾的斜槓也是不影響的。

最後我們來討論,使用手動方式來建立虛擬目錄的情況,也就是之前我們所說的情況,

新建一個檔案(注意是和phpmyadmin.conf位於相同目錄下),比如叫yy.conf,編輯檔案內容,可以先複製貼上phpmyadmin.conf檔案中的內容,然後修改其中的引數, 就是將

Alias /kk/ "c:/wamp/apps/meas/" 行中的 kk 改為:"真實的虛擬目錄名",將c:/wamp/apps/meas/ 改為真實的主目錄檔案位置

將<Directory "c:/wamp/apps/phpmyadmin3.2.0.1/">行中的 c:/wamp/apps/phpmyadmin3.2.0.1/ 亦作相應修改

注意末尾帶上斜槓。

重啟客戶端,就是點選Quick Admin下的Restart All Services命令,再進行測試。這一步很關鍵,如果不重啟那麼測試時仍然會出現404error的錯誤提示。

在ie下和ff下測試均正常。

總結: 

bug:除非手動建立虛擬目錄,否則phpmyadmin虛擬目錄與別的新建的虛擬目錄,在瀏覽器中測試時是存在不同的情況的

還有幾種情況,讀者也可以做些測試,就是將:.conf檔案中的內容做一些改動

如將 Alias /kk/ "c:/wamp/apps/meas/" 改為: Alias /kk "c:/wamp/apps/meas/"

或者 Alias /kk/"c:/wamp/apps/meas"

或者 Alias /kk/ "c:/wamp/apps/meas"

同理後面的

<Directory "c:/wamp/apps/phpmyadmin3.2.0.1/">也可以去除末尾的斜槓來進行測試。

鑑於以上情況,作者建議,不使用客戶端的alias工具來新建虛擬目錄,而是使用手動方式來新建,這樣就不會出現任何問題,當然注意相應引數要做些變動

最後說明一點,手動新建.conf檔案時,檔名其實與虛擬目錄的檔名沒有關聯

虛擬目錄的檔名僅取決於 Alias /kk/ "c:/wamp/apps/meas/" 中的第一個引數(在本行中為'kk')。