25 個有用的 Apache ‘.htaccess’ 技巧來保護和自定義網站

網站是我們生活中重要的一部分。它們用來擴展業務、分享知識等等。早期僅限於提供靜態內容,隨著動態客戶端和服務器端腳本語言的引入以及現有靜態語言如html向html5的持續發展,為網站添加每一點動態性都是可能的,未來很快將會有更多的發展。

有了網站,就需要一個能夠將這些網站展示給全球廣大觀眾的單位。這種需求由提供網站主機的服務器來滿足。這包括一系列的服務器,如:Apache HTTP ServerJoomlaWordPress,這些都可以讓人們主機他們的網站。

25 htaccess Tricks

想要主機網站的人可以建立自己的本地服務器,或者聯繫上述任何一個或其他服務器管理員來主機他的網站。但實際問題從這一點開始。網站的性能主要取決於以下因素:

  1. 網站消耗的帶寬。
  2. 網站對抗駭客的安全性。
  3. 當通過數據庫進行數據搜索時的樂觀態度
  4. 在顯示導航菜單和提供更多UI功能時的用戶友好性。

除此之外,影響服務器成功主機網站的各種因素包括:

  1. 為特定網站實現的數據壓縮量。
  2. 同時為請求相同或不同網站的多個客戶提供服務的能力。
  3. 保護輸入在網站上的機密數據,如:電子郵件、信用卡詳細信息等。
  4. 允許越來越多的選項來增強網站的動態性。

本文討論了伺服器提供的一項功能,有助於增強網站性能並保護其免受惡意機器人、熱鏈等的影響,即“.htaccess”文件。

.htaccess是什麼?

htaccess(或超文本訪問)是提供選項給網站所有者來控制伺服器環境變數和其他參數以增強其網站功能的文件。這些文件可以存在於網站目錄樹中的任何目錄中,並為該目錄以及其中的文件和文件夾提供功能。

這些功能是什麼?這些是伺服器指令,即指示伺服器執行特定任務的行,這些指令僅適用於放置此文件的文件夾中的文件和文件夾。這些文件默認為隱藏文件,因為所有操作系統和Web伺服器都配置為默認忽略它們,但將隱藏文件顯示出來可以讓您看到這個非常特殊的文件。可以控制哪些類型的參數是後續部分討論的主題。

注意: 如果.htaccess文件放置在/apache/home/www/Gunjit/目录中,那么它将为该目录中的所有文件和文件夹提供指令,但如果该目录包含另一个文件夹,即:/Gunjit/images/,其中再次有另一个.htaccess文件,那么该文件夹中的指令将覆盖主.htaccess文件(或在层次结构中更高的文件夹中的文件)。

Apache服务器和.htaccess文件

Apache HTTP服务器通俗地称为Apache,以尊重其在战争策略方面的卓越技能而以美洲原住民部落阿帕奇命名。基于C/C++和XML构建,它是跨平台Web服务器,基于NCSA HTTPd服务器,对全球网络的增长和进步起着关键作用。

最常用于UNIX,Apache可用于各种平台,包括FreeBSD,Linux,Windows,Mac OS,Novel Netware等。2009年,Apache成为首个为超过1亿个网站提供服务的服务器。

Apache服务器在www/目录中每个用户有一个.htaccess文件。尽管这些文件是隐藏的,但如果需要,可以使其可见。在www/目录中,有许多文件夹,每个文件夹都与用户或所有者的名称命名的网站相关。除此之外,您可以在每个文件夹中有一个.htaccess文件,该文件配置了该文件夹中的文件,如上所述。

如何在Apache服务器上配置htaccess文件如下…

在Apache服务器上的配置

有两种情况:

在自己的服务器上托管网站

在這種情況下,如果未啟用 .htaccess 檔案,您可以通過簡單地轉到 httpd.conf(Apache HTTP Daemon 的默認配置文件)並找到 <Directories> 部分來啟用 .htaccess 檔案。

<Directory "/var/www/htdocs">

然後找到說明的那一行…

AllowOverride None 

並將其更正為。

AllowOverride All

現在,重新啟動 Apache,.htaccess 將起作用。

在不同的主機提供商伺服器上託管網站

在這種情況下,最好諮詢主機管理員,看他們是否允許訪問 .htaccess 檔案。

Apache Web 伺服器的 25 個「.htaccess」技巧

1. 如何在 .htaccess 檔案中啟用 mod_rewrite

mod_rewrite 選項允許您使用重定向,將真實 URL 隱藏並重定向到其他 URL。這個選項非常有用,可以讓您將冗長和長 URL 替換為短小且易記的 URL。

要允許 mod_rewrite,只需練習將以下行添加為您的 .htaccess 檔案的第一行。

Options +FollowSymLinks

此選項允許您跟隨符號連結,從而在網站上啟用 mod_rewrite 選項。稍後將介紹將 URL 替換為短小且簡潔的 URL。

2. 如何允許或拒絕訪問網站

htaccess 檔案可以通過使用 orderallowdeny 關鍵字來允許或拒絕訪問網站、文件夾或目錄中的文件。

僅允許訪問 192.168.3.1 IP
Order Allow, Deny
Deny from All
Allow from 192.168.3.1

OR

Order Allow, Deny
Allow from 192.168.3.1

順序 這裡的關鍵字指定了處理 允許拒絕 存取的順序。對於上述的 ‘順序‘ 陳述,允許 陳述將首先被處理,然後才會處理 拒絕 陳述。

僅拒絕一個 IP 地址的存取

以下行提供了允許所有用戶訪問網站,除了具有 IP 地址 192.168.3.1 的用戶之外的方法。

rder Allow, Deny
Deny from 192.168.3.1
Allow from All

OR


Order Deny, Allow
Deny from 192.168.3.1

3. 生成不同錯誤碼的 Apache 錯誤文件。

使用一些簡單的行,我們可以修復由伺服器生成的不同錯誤碼時用戶/客戶端請求網站上不可用頁面時的錯誤文件,就像我們中的大多數人在網頁瀏覽器中看到 ‘ 404 頁面未找到 ‘ 頁面一樣。 ‘ .htaccess ‘ 文件指定在出現此類錯誤條件時應採取的操作。

為此,需要將以下行添加到 ‘ .htaccess ‘ 文件中:

ErrorDocument <error-code> <path-of-document/string-representing-html-file-content>

ErrorDocument ‘ 是一個關鍵字,錯誤碼可以是 401403404500 或任何有效的錯誤代碼,最後, ‘ path-of-document ‘ 代表本地機器上的路徑(如果您正在使用自己的本地伺服器)或伺服器上的路徑(如果您正在使用其他人的伺服器來託管您的網站)。

範例:
ErrorDocument 404 /error-docs/error-404.html

上述行將 ‘ error-404.html ‘ 放置在 error-docs 資料夾中的文件設置為在伺服器為客戶端的任何無效請求頁面報告 404 錯誤時顯示。

rrorDocument 404 "<html><head><title>404 Page not found</title></head><body><p>The page you request is not present. Check the URL you have typed</p></body></html>"

上述表示是正確的,將字串放在一個通常的html文件中。

4. 設置/取消Apache伺服器環境變數

.htaccess文件中,您可以設置或取消全局環境變數,這些變數允許網站主機修改。要設置或取消環境變數,您需要將以下行添加到您的.htaccess文件中。

設置環境變數
SetEnv OWNER “Gunjit Khera”
取消環境變數
UnsetEnv OWNER

5. 為文件定義不同的MIME類型

MIME(多用途互聯網多媒體擴展)是瀏覽器在運行任何網頁時默認識別的類型。您可以在.htaccess文件中為您的網站定義MIME類型,以便您定義的不同類型的文件可以被伺服器識別並運行。

<IfModule mod_mime.c>
	AddType	application/javascript		js
	AddType application/x-font-ttf		ttf ttc
</IfModule>

在這裡,mod_mime.c是控制不同MIME類型定義的模塊,如果您在系統上安裝了此模塊,則可以使用此模塊為網站中使用的不同擴展定義不同的MIME類型,以便伺服器能夠理解它們。

6. 如何限制Apache中上傳和下載的大小

.htaccess文件允許您控制從您的網站上的特定客戶端上傳或下載的數據量。為此,您只需將以下行附加到您的.htaccess文件中:

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

上述行設置最大上傳大小、最大發布數據大小、最大執行時間,即允許用戶在本地計算機上執行網站的最大時間,以及輸入時間的最大時間限制。

Source:
https://www.tecmint.com/apache-htaccess-tricks/