在裝完 Apache 伺服器後,也許你的 www 下有一些資料夾不想被別人看到,或是只想給特定的人士看。在一般的情況下,想要這麼做需要更改 httpd.conf 裡的設定才可以完成。但是 httpd.conf 改完後必須要重啟伺服器,而且檔案內容那麼多,時常都改到眼花繚亂,有沒有更快的方法呢?

答案是有的!只要是用 Apache 伺服器,都可以用 .htaccess 這個檔案將你的資料夾加密。其實網路上相關的教學文章有很多,但大多數都是討論在 Linux 下的設定方式 , Windows 下的設定教學少之又少,雖然它們的設定方式都是一樣的,但如果沒有經驗,在 Windows 下設定還是會遇到一些奇怪的問題。

所以以下我就來說明要如何在 Windows 下設定 .htaccess ,以及可能會遇到的問題及解決方法,重點部份我會以紅字加以註明。

首先,要啟用 .htaccess ,你需要更改 httpd.conf 的設定,請打開 httpd.conf 找到這四行:
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
(這個檔案放在 Apache 的 conf 資料夾中,如果找不到,可以在 Apache 的資料夾下搜尋 httpd.conf )

把 AllowOverride None 改為 AllowOverride All:
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all

更改完 httpd.conf 的設定後請存檔,並重開伺服器。接下來,請在你想隱藏的資料夾下創一個純文字文件,如果你只是要自己看,你可以在裡面打上:
Order deny,allow
Deny from all
Allow from 你的IP

如此設定的話,除了你之外,別人在存取這個資料夾時都會出現 Forbidden 頁面。
你也可以以半型空格指定多組IP有瀏覽權限,例如:
Order deny,allow
Deny from all
Allow from 192.192.2.120 127.0.0.1 140.112.25.21

或是只打IP的前兩組號碼,允許同一個網段:
Order deny,allow
Deny from all
Allow from 140.112 192.192

寫好之後請以檔名 .htaccess 存檔。

有很多 Windows 使用者在存檔時就卡住了,因為如果你要直接在 Windows 底下以 .htaccess 這個檔名來儲存,系統會跟你說:


正確的作法是:


如果你是想用密碼認証的方式讓特定人士觀看呢?
那麼你需要在伺服器中創一個 .htpasswd 的檔案來存放使用者的帳號與密碼。這個 .htpasswd 內容的格式是:
admin:pass1
guest:pass2

不過它的密碼是有加密過的,你無法直接用文字編輯器去編輯。

正確的作法是:
用命令提示字元打開 htpasswd 這個檔案(一般來說都是存放在 Apache 的 bin 當中),並下參數建立密碼檔,如圖所示。

檔案建立後,你會發現在你的 bin 資料夾中會多出一個 .htpasswd 的檔案,接下來,你只要在 .htaccess 中加入以下內容:
AuthName "◆飛卡的電腦◇"
AuthType Basic
AuthUserFile bin/.htpasswd
require valid-user

這樣子別人在進入你的網站時,就會出現下面的畫面了:


其中,AuthName 是設定要顯示的網域名稱,引號中的內容可以自行輸入
AuthType Basic 請不要去更動它
AuthUserFile bin/.htpasswd 是設定你的密碼檔存放的 絕對路徑 ,這裡也是大家常常卡住的地方。
所謂絕對路徑,從伺服器底下的資料夾開始就是第一層;例如,我的密碼檔是放在 Apache2.2 底下的 bin 中,而我的 Apache 程式是放在 Apache2.2 中,那麼,密碼檔的絕對路徑就是在 bin 底下,一般人比較容易出錯的地方是在 bin/.htpasswd 的前面多加了一條反斜線,變成 /bin/.htpasswd ,至於為什麼會有這樣子的錯誤呢?主要是 Apache 官方的範例設定就是這樣子…。那是在 Linux 底下的設定。如果你是用 Windows 的話,這樣子設定是讀不到密碼檔的,要特別注意!最後, require valid-user 是指允許有效的使用者登入,這行也請不要去更動它。
arrow
arrow
    全站熱搜

    bshadow 發表在 痞客邦 留言(3) 人氣()