有用過 IIS 的人,應該對禁止瀏覽目錄、錯誤頁面、MIME Type、限制 IP 存取…這些站台設定並不陌生。
(IIS,Internet Information Services,它是一套 Windows 內建的架設 Web 或 FTP 站台的軟體)
IIS 有圖形使用者介面可以操作上述的站台設定,畫面如下:
IIS-1.jpg  

如果無法連到上圖這個主控台(Console)畫面進行操作的話,
也可以在網站的根目錄上傳一個「web.config」檔,從而實現網站擁有者想要達成的設定。
比如:筆者的網頁空間有一個 *.reg 檔,它預設會被判讀為文字檔,而直接被瀏覽器顯示文字內容。
如果筆者想要讓瀏覽者點選 *.reg 檔的連結後,就直接下載檔案,
可以編輯 web.config 的內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".reg" mimeType="application/reg" />
        </staticContent>
    </system.webServer>
</configuration>

將 web.config 上傳(儲存)到網站根目錄之後,
如果伺服器管理者開啟 IIS 設定畫面,就會看到 IIS 自動新增了一個 reg 的項目,
只不過項目類型不是「已繼承」,而是「本機」,如下圖所示:
IIS-2.jpg  

大多數免費網頁空間(免空)所使用的網頁伺服器軟體是 Apache,
它也有跟 IIS 的「web.config」同樣功能的設定檔,即「.htaccess」,
不過在編寫指令方面,兩者有很大的不同。
筆者以前有使用過 000webhost 的免費網站空間,並發表過介紹文章,
但是後來它強迫筆者重新註冊(它現在有用 2freehosting.com 這個域名,點選 Login 就會導向 000webhost),
筆者也對它不時將筆者的各個網頁(不只是首頁)自動導向它的「cpu-limit-reached.html」頁面而深感厭惡,
因此後來就不再使用這個空間,而且也將以前發表過的文章設為隱藏,
以免造成有問題的教學文章發生誤人子弟的情形。

筆者最近申請了【Byet Host】及【Free Web Hosting Area】(簡稱 FreeWHA),
以及【InfinityFree】這三個免費空間,
它們好用與否,筆者還要持續觀察幾個月,才能下定論。
簡言之,Byet、InfinityFree 對於 .htaccess 的限制較少、主控台(後台)也較完善;
而 FreeWHA 對於 .htaccess 的限制較多,但網頁載入速度較快。

Byet 和 InfinityFree 提供的後台及系統幾乎是一模一樣的,
只是 InfinityFree 多了一層「入口帳號」,所以申請過程容易讓人混淆!
Byet 和 InfinityFree 都不支援「Free SSL」核發的憑證,
而 FreeWHA 則是註冊它某些域名(如:freevar.com)的空間後,
可以在後台啟用 https(它已經自動為 *.freevar.com 域名申請 SSL 憑證,所以使用者不需再自行申請)。
這三個空間對檔名都是「case sensitive」(區分大小寫),所以「html」和「HTML」會被視為不同。
另外,Byet 會在網址後面加上「?i=1」(用意為對付惡意機器人程式),可以不必理會它。
它們的 PHP、MySQL…這些進階的功能,筆者未曾使用過,可能也不會去使用,所以無從評論。
筆者只有用它們來存放網頁,以及使用它們的 FTP 功能來同步編修後的網頁、檔案,如此而已。
因為筆者受過 000webhost 的傷害,所以奉勸各位申請這類免空時,一定要單獨設一組特別的密碼,
絕對不要將免空的密碼和您的 E-Mail 密碼(或平常會用到的密碼),取得一模一樣!

以下開始正式介紹「.htaccess」的 4 種用途,並說明它們的目的,
以及在 Byet、FreeWHA 的適用情形(Infinity 的系統與 Byet 相似,以下僅以 Byet 作代表)。
讀者可以先將以下藍色字的內容複製起來,再開啟新的「記事本」視窗,並貼上。
#禁止瀏覽目錄:
Options -Indexes
#自訂錯誤頁面:
ErrorDocument 400 /Error.html
ErrorDocument 401 /Error.html
ErrorDocument 403 /Error.html
ErrorDocument 404 /Error.html
ErrorDocument 500 /Error.html
ErrorDocument 502 /Error.html
#自訂 MIME Type:
AddType application/reg .reg
然後在存檔畫面中,先將〝存檔類型〞選為「所有檔案」,再於〝檔案名稱〞輸入「.htaccess」。
(編碼使用 ANSI 或 UTF-8 皆可,筆者使用 UTF-8)
將 .htaccess 上傳到網站根目錄後,次目錄預設為繼承根目錄的設定,
所以不用將 .htaccess 上傳到每一層目錄。

以 # 為開頭的話,代表那一行是註解,通常是對下一行(或多行)的描述。

「禁止瀏覽目錄」只要使用「Options -Indexes」這串指令就夠了。
它的用意是:假設網站上有一個 images 目錄(資料夾),專門用來存放圖片,
而 images 目錄裡並沒有 index、default(副檔名是 htm、html、php)這類的〝預設文件〞,
那麼有心的訪客(瀏覽者)或搜尋軟體,就可能輕易列出 images 目錄下的所有檔案,
而設定「Options -Indexes」之後,就算被人猜到有這層目錄,他們也只會看到錯誤提示。
Byet、FreeWHA 都支援這串指令。

「自訂錯誤頁面」的指令是:ErrorDocument 伺服器回應錯誤代號 連結的錯誤網頁
它的用意是:當訪客要求的網頁、檔案找不到,或訪客企圖進入限定 IP 的目錄時,向訪客報告錯誤。
筆者建議在根目錄存放一個「Error.html」,內容如下列斜體字:
找不到網頁!
抱歉!您要求的網頁不存在,也有可能是您的權限不足,或是管理者禁止瀏覽目錄。
Page not found
We're sorry, we couldn't find the page you requested.
(最好使用中英雙語提示,以免誤闖叢林的外國人看不懂中文字句)
然後將常見的錯誤代號都導向 Error.html。
不過,FreeWHA 對此指令有個限制,就是不能使用 URL 連結到其他網站的錯誤頁面。
FreeWHA 的程式會自動檢查上傳後的 .htaccess,
如果不符合它的規定,它就會在那一行加入提示(甚至不提示),並刪除後面的內容,
讀者可以上傳 .htaccess 之後,等個 1 分鐘再將 .htaccess 下載回本機查看,就會知曉。

「自訂 MIME Type」的指令是:AddType MIME類型 .副檔名
至於它的用意,筆者在本文一開端,已經舉 *.reg 檔為例,此處不再贅述。
值得一提的是:FreeWHA 並不允許使用者自訂 MIME 類型,有設定也會失效;
而 Byet 則允許自訂 MIME Type。

「限制 IP 存取」通常是針對特定的目錄,
比如筆者想將某層目錄設為只有 1.174.123.123 這組 IP 可以訪問,
此時可將以下藍色字的內容另外儲存成一個 .htaccess 檔,然後儲存在這個特定目錄之下即可。
#限制 IP 存取
order deny,allow
allow from 1.174.123.123
deny from all


補充:
筆者使用 Sucuri 的【Free website security check & malware scanner】(免費線上掃描工具),
發現 Byet 及 FreeWHA 預設都開啟 HTTP Trace Method,
在開啟狀態下會使網站存在被攻擊的風險,
所以可以再於 .htaccess 再添加以下藍色字的內容:
#關閉 HTTP Trace Method
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
不過,以上這段指令只有對 Byet 的空間有作用;
FreeWHA 的檢查程式雖然不會刪除這段指令,但使用 Sucuri 的掃描工具重掃後,
仍會得到「HTTP Trace Method is allowed on your site」的結果。
如果在 FreeWHA 註冊時,選用的域名是 *.freevar.com 的話,
可以透過點選後台的「Enable https://」申請自動導向 HTTPS,
申請成功後就不會有 HTTP Trace Method 的風險問題了!

arrow
arrow
    全站熱搜

    terryhung 發表在 痞客邦 留言(0) 人氣()