2010年12月30日 星期四

httpd.conf的Alias設定

一般來說, 完成了以下的工作, 即可啟動個人網站:
1.在個人的主目錄下建立一個子目錄public_html
2.在public_html裡放一個首頁檔index.html
然後在browser的網址列輸入:
程式碼:

http://your.hostname/~username

即可看到username的首頁。如果想去掉那個怪怪的~符號, 方式之一是改一下 /etc/httpd/conf/httpd.conf 的設定(httpd.conf是httpd的設定檔, 前述的路徑是使用rpm方式安裝)。只要在httpd.conf中增加一個alias(別名)的設定即可,作法如下:

在httpd.conf找一個適當的位置,新增以下的文字:程式碼:


Alias /username "/home/username/public_html/"

    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all



這裡要特別討論的是:

  1.Alias 後的別名的設定:設 /username 與 /username/ 有何不同?
  2.雙引號中的目錄名稱設定:最後加 / 與不加 /有何不同?


[討論1]
Alias既然是別名的意思,也就說將來user在browser輸入的網址,Apache將以此列的設定來解析並替換成後面雙引號中所設定的目錄,舉例來說,
若設定是程式碼:


Alias /username "/home/username/public_html/"
,則網址 http://your.hostname/username 將被替換成http://your.hostname/home/username/public_html/,no problem!

若設定是程式碼:


Alias /username/ "/home/username/public_html/"
(注意/username後多加了一個 /),則網址 http://your.hostname/username 則將找不到網頁,因為字串/username並沒有設定Alias啊!

若把網址改為 http://your.hostname/username/ (注意,最後多加一個 /)則被Apache替換成 http://your.hostname/home/username/public_html/,就沒問題了,只是user哪搞得清楚網址列的最後要不要加一個 /!
所以 Alias /username/ "path" 有可能讓user找不到網頁的風險,因此結論是:/username的後面不要加 / 符號!

[討論2]
至於Alias /username "path",其中雙引號裡裝的目錄名稱最後應不應該加 /呢?答案其實很明顯了,再拿上面的例子來說明了:
若設定是 程式碼:

Alias /username "/home/username/public_html/"
(注意public_html後加了/),則網址 http://your.hostname/username (注意,最後不加 /)將被替換成
http://your.hostname/home/username/public_html/,這樣的網址是OK的。

而網址 http://your.hostname/username/ (注意,最後多加一個 /)將被替換成 http://your.hostname/home/username/public_html//,這樣的網址雖有點怪(最後面是兩個/),但Apache也可以接受。

若設定是 程式碼:

Alias /username "/home/username/public_html"
(注意public_html後不加/),則
網址 http://your.hostname/username 將被替換成 http://your.hostname/home/username/public_html,這樣對Apache來說也是OK的。

而網址 http://your.hostname/username/ (注意,最後多加一個 /)將被替換成 http://your.hostname/home/username/public_html/,這樣的網址是最好的結果。

結論是雙引中的path,其寫法最後可加/,也可不加 /。

0 意見: