.htaccess重定向和url重寫詳細介紹
2024-07-09 22:40:15
供稿:網友
.htaccess是需要apache打開虛擬主機支持.htaccess才可以實現下面的功能哦,下面我來介紹關于.htaccess阻止某些ip訪問,重定向和url重寫,限定訪問特點資源,實現緩存等功能介紹 什么是htaccess
概述來說,htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。
一個簡單的重定向
復制代碼 代碼如下:Redirect 301 ^old.html$ http://localhost/new.html
這是設置一個http狀態碼為301(永久移動)并把所有訪問old.html轉向到new.html。使用了正則表達式來匹配訪問的頁面,后面的url必須是完整路徑。
Url重寫
復制代碼 代碼如下:
RewriteEngine on
RewriteRule ^old.html$ new.html
第一行打開重寫引擎
第二行是重寫規則。這樣用戶訪問old.html時實際卻是訪問的new.html,而且用戶對此好吧知情。因為地址欄里依舊顯示是old.html。
為了在地址欄顯示新的訪問地址,我們可以加個f標志在rewriterule語句里。
復制代碼 代碼如下:
RewriteRule ^old.html$ http://hostname/new.html [r=301]
下面是把帶查詢參數的url重寫成對搜索引擎友好的url
復制代碼 代碼如下:
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3
這條規則允許訪問者以類似這樣的
url products/turntables/technics/sl1210,
來訪問product.php?cat=turntables&brand=technics&prod=sl1210.
括號里為一個單元,分別對應后面的$1,$2,$3。[^/]+ 在原括號里表示除了/之外的任何一個或是多個字符。
自定義錯誤頁面
復制代碼 代碼如下:ErrorDocument 404"/404.html"
這是定義404頁面無法找到的錯誤,也可以定義其他錯誤代碼的頁面。
限定訪問特點資源
復制代碼 代碼如下:
<Files"protectedfile.html">
AuthName"Username and password required"
AuthUserFile/path/to/.htpasswd
Require valid-user
AuthType Basic
</Files>
保護protectedfile.html,authName是登陸框的提示信息,authuserfile是.htpasswd文件的路徑
阻止某些ip訪問
復制代碼 代碼如下:
order allow,deny
deny from 192.168.0.1
allow from allOrder
告訴apache指令的順序。這里的這個是先允許后拒絕的。雖然allow from all后出現但是還是在前面生效。拒絕了192.168.0.1的訪問。也可以按段來屏蔽訪問的,只要只指定前面的幾段就可以類似,192.168.
實現緩存
復制代碼 代碼如下:
ExpiresActive on
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
第一行開啟,下面分別控制各種資源都加上一個月的緩存期。這個功能依賴apache的mod_expires 模塊。
認證舉例
如果你只是為了知道如何認證,而直接從這里開始看的,有很重要的一點需要注意,有一種常見的誤解,認為實現密碼認證必須要使用.htaccess文件,其實是不正確的。把認證指令放在主配置文件的<Directory>段中是一個更好的方法,而.htaccess文件應該僅僅用于無權訪問主配置文件的時候。參見上述關于何時應該與何時不應該使用.htaccess文件的討論。