.htaccess重定向和url重寫(xiě)詳細(xì)介紹
更新時(shí)間:2013年01月28日 11:36:28 作者:
.htaccess是需要apache打開(kāi)虛擬主機(jī)支持.htaccess才可以實(shí)現(xiàn)下面的功能哦,下面我來(lái)介紹關(guān)于.htaccess阻止某些ip訪問(wèn),重定向和url重寫(xiě),限定訪問(wèn)特點(diǎn)資源,實(shí)現(xiàn)緩存等功能介紹
什么是htaccess
概述來(lái)說(shuō),htaccess文件是Apache服務(wù)器中的一個(gè)配置文件,它負(fù)責(zé)相關(guān)目錄下的網(wǎng)頁(yè)配置。通過(guò)htaccess文件,可以幫我們實(shí)現(xiàn):網(wǎng)頁(yè)301重定向、自定義404錯(cuò)誤頁(yè)面、改變文件擴(kuò)展名、允許/阻止特定的用戶或者目錄的訪問(wèn)、禁止目錄列表、配置默認(rèn)文檔等功能。
一個(gè)簡(jiǎn)單的重定向
這是設(shè)置一個(gè)http狀態(tài)碼為301(永久移動(dòng))并把所有訪問(wèn)old.html轉(zhuǎn)向到new.html。使用了正則表達(dá)式來(lái)匹配訪問(wèn)的頁(yè)面,后面的url必須是完整路徑。
Url重寫(xiě)
RewriteEngine on
RewriteRule ^old.html$ new.html
第一行打開(kāi)重寫(xiě)引擎
第二行是重寫(xiě)規(guī)則。這樣用戶訪問(wèn)old.html時(shí)實(shí)際卻是訪問(wèn)的new.html,而且用戶對(duì)此好吧知情。因?yàn)榈刂窓诶镆琅f顯示是old.html。
為了在地址欄顯示新的訪問(wèn)地址,我們可以加個(gè)f標(biāo)志在rewriterule語(yǔ)句里。
RewriteRule ^old.html$ http://hostname/new.html [r=301]
下面是把帶查詢參數(shù)的url重寫(xiě)成對(duì)搜索引擎友好的url
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3
這條規(guī)則允許訪問(wèn)者以類似這樣的
url products/turntables/technics/sl1210,
來(lái)訪問(wèn)product.php?cat=turntables&brand=technics&prod=sl1210.
括號(hào)里為一個(gè)單元,分別對(duì)應(yīng)后面的$1,$2,$3。[^/]+ 在原括號(hào)里表示除了/之外的任何一個(gè)或是多個(gè)字符。
自定義錯(cuò)誤頁(yè)面
這是定義404頁(yè)面無(wú)法找到的錯(cuò)誤,也可以定義其他錯(cuò)誤代碼的頁(yè)面。
限定訪問(wèn)特點(diǎn)資源
<Files"protectedfile.html">
AuthName"Username and password required"
AuthUserFile/path/to/.htpasswd
Require valid-user
AuthType Basic
</Files>
保護(hù)protectedfile.html,authName是登陸框的提示信息,authuserfile是.htpasswd文件的路徑
阻止某些ip訪問(wèn)
order allow,deny
deny from 192.168.0.1
allow from allOrder
告訴apache指令的順序。這里的這個(gè)是先允許后拒絕的。雖然allow from all后出現(xiàn)但是還是在前面生效。拒絕了192.168.0.1的訪問(wèn)。也可以按段來(lái)屏蔽訪問(wèn)的,只要只指定前面的幾段就可以類似,192.168.
實(shí)現(xiàn)緩存
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"
第一行開(kāi)啟,下面分別控制各種資源都加上一個(gè)月的緩存期。這個(gè)功能依賴apache的mod_expires 模塊。
認(rèn)證舉例
如果你只是為了知道如何認(rèn)證,而直接從這里開(kāi)始看的,有很重要的一點(diǎn)需要注意,有一種常見(jiàn)的誤解,認(rèn)為實(shí)現(xiàn)密碼認(rèn)證必須要使用.htaccess文件,其實(shí)是不正確的。把認(rèn)證指令放在主配置文件的<Directory>段中是一個(gè)更好的方法,而.htaccess文件應(yīng)該僅僅用于無(wú)權(quán)訪問(wèn)主配置文件的時(shí)候。參見(jiàn)上述關(guān)于何時(shí)應(yīng)該與何時(shí)不應(yīng)該使用.htaccess文件的討論。
有此聲明在先,如果你仍然需要使用.htaccess文件,請(qǐng)繼續(xù)看以下說(shuō)明。
.htaccess文件的內(nèi)容:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
必須設(shè)置 AllowOverride AuthConfig 以允許這些指令生效。
服務(wù)器端包含(SSI)舉例
.htaccess文件的另一個(gè)常見(jiàn)用途是允許一個(gè)特定的目錄使用服務(wù)器端包含(SSI),可以在需要的目錄中放置.htaccess文件,并作如下配置:
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
注意,必須同時(shí)設(shè)置 AllowOverride Options 和 AllowOverride FileInfo 以使這些指令生效。
指令的作用范圍.htaccess文件中的配置指令作用于.htaccess文件所在的目錄及其所有子目錄,但是很重要的、需要注意的是,其上級(jí)目錄也可能會(huì)有.htaccess文件,而指令是按查找順序依次生效的,所以一個(gè)特定目錄下的.htaccess文件中的指令可能會(huì)覆蓋其上級(jí)目錄中的.htaccess文件中的指令,即子目錄中的指令會(huì)覆蓋父目錄或者主配置文件中的指令。
例子:
目錄中的.htaccess
文件有如下內(nèi)容:
Options +ExecCGI
(注意:必須設(shè)置"AllowOverride Options"以允許在.htaccess中使用"Options"指令)
/www/htdocs/example1/example2目錄中的.htaccess文件有如下內(nèi)容:
Options Includes
概述來(lái)說(shuō),htaccess文件是Apache服務(wù)器中的一個(gè)配置文件,它負(fù)責(zé)相關(guān)目錄下的網(wǎng)頁(yè)配置。通過(guò)htaccess文件,可以幫我們實(shí)現(xiàn):網(wǎng)頁(yè)301重定向、自定義404錯(cuò)誤頁(yè)面、改變文件擴(kuò)展名、允許/阻止特定的用戶或者目錄的訪問(wèn)、禁止目錄列表、配置默認(rèn)文檔等功能。
一個(gè)簡(jiǎn)單的重定向
復(fù)制代碼 代碼如下:
Redirect 301 ^old.html$ http://localhost/new.html
這是設(shè)置一個(gè)http狀態(tài)碼為301(永久移動(dòng))并把所有訪問(wèn)old.html轉(zhuǎn)向到new.html。使用了正則表達(dá)式來(lái)匹配訪問(wèn)的頁(yè)面,后面的url必須是完整路徑。
Url重寫(xiě)
復(fù)制代碼 代碼如下:
RewriteEngine on
RewriteRule ^old.html$ new.html
第一行打開(kāi)重寫(xiě)引擎
第二行是重寫(xiě)規(guī)則。這樣用戶訪問(wèn)old.html時(shí)實(shí)際卻是訪問(wèn)的new.html,而且用戶對(duì)此好吧知情。因?yàn)榈刂窓诶镆琅f顯示是old.html。
為了在地址欄顯示新的訪問(wèn)地址,我們可以加個(gè)f標(biāo)志在rewriterule語(yǔ)句里。
復(fù)制代碼 代碼如下:
RewriteRule ^old.html$ http://hostname/new.html [r=301]
下面是把帶查詢參數(shù)的url重寫(xiě)成對(duì)搜索引擎友好的url
復(fù)制代碼 代碼如下:
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3
這條規(guī)則允許訪問(wèn)者以類似這樣的
url products/turntables/technics/sl1210,
來(lái)訪問(wèn)product.php?cat=turntables&brand=technics&prod=sl1210.
括號(hào)里為一個(gè)單元,分別對(duì)應(yīng)后面的$1,$2,$3。[^/]+ 在原括號(hào)里表示除了/之外的任何一個(gè)或是多個(gè)字符。
自定義錯(cuò)誤頁(yè)面
復(fù)制代碼 代碼如下:
ErrorDocument 404"/404.html"
這是定義404頁(yè)面無(wú)法找到的錯(cuò)誤,也可以定義其他錯(cuò)誤代碼的頁(yè)面。
限定訪問(wèn)特點(diǎn)資源
復(fù)制代碼 代碼如下:
<Files"protectedfile.html">
AuthName"Username and password required"
AuthUserFile/path/to/.htpasswd
Require valid-user
AuthType Basic
</Files>
保護(hù)protectedfile.html,authName是登陸框的提示信息,authuserfile是.htpasswd文件的路徑
阻止某些ip訪問(wèn)
復(fù)制代碼 代碼如下:
order allow,deny
deny from 192.168.0.1
allow from allOrder
告訴apache指令的順序。這里的這個(gè)是先允許后拒絕的。雖然allow from all后出現(xiàn)但是還是在前面生效。拒絕了192.168.0.1的訪問(wèn)。也可以按段來(lái)屏蔽訪問(wèn)的,只要只指定前面的幾段就可以類似,192.168.
實(shí)現(xiàn)緩存
復(fù)制代碼 代碼如下:
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"
第一行開(kāi)啟,下面分別控制各種資源都加上一個(gè)月的緩存期。這個(gè)功能依賴apache的mod_expires 模塊。
認(rèn)證舉例
如果你只是為了知道如何認(rèn)證,而直接從這里開(kāi)始看的,有很重要的一點(diǎn)需要注意,有一種常見(jiàn)的誤解,認(rèn)為實(shí)現(xiàn)密碼認(rèn)證必須要使用.htaccess文件,其實(shí)是不正確的。把認(rèn)證指令放在主配置文件的<Directory>段中是一個(gè)更好的方法,而.htaccess文件應(yīng)該僅僅用于無(wú)權(quán)訪問(wèn)主配置文件的時(shí)候。參見(jiàn)上述關(guān)于何時(shí)應(yīng)該與何時(shí)不應(yīng)該使用.htaccess文件的討論。
有此聲明在先,如果你仍然需要使用.htaccess文件,請(qǐng)繼續(xù)看以下說(shuō)明。
.htaccess文件的內(nèi)容:
復(fù)制代碼 代碼如下:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
必須設(shè)置 AllowOverride AuthConfig 以允許這些指令生效。
服務(wù)器端包含(SSI)舉例
.htaccess文件的另一個(gè)常見(jiàn)用途是允許一個(gè)特定的目錄使用服務(wù)器端包含(SSI),可以在需要的目錄中放置.htaccess文件,并作如下配置:
復(fù)制代碼 代碼如下:
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
注意,必須同時(shí)設(shè)置 AllowOverride Options 和 AllowOverride FileInfo 以使這些指令生效。
指令的作用范圍.htaccess文件中的配置指令作用于.htaccess文件所在的目錄及其所有子目錄,但是很重要的、需要注意的是,其上級(jí)目錄也可能會(huì)有.htaccess文件,而指令是按查找順序依次生效的,所以一個(gè)特定目錄下的.htaccess文件中的指令可能會(huì)覆蓋其上級(jí)目錄中的.htaccess文件中的指令,即子目錄中的指令會(huì)覆蓋父目錄或者主配置文件中的指令。
例子:
復(fù)制代碼 代碼如下:
/www/htdocs/example1
目錄中的.htaccess
文件有如下內(nèi)容:
Options +ExecCGI
(注意:必須設(shè)置"AllowOverride Options"以允許在.htaccess中使用"Options"指令)
/www/htdocs/example1/example2目錄中的.htaccess文件有如下內(nèi)容:
Options Includes
您可能感興趣的文章:
- c#連接access數(shù)據(jù)庫(kù)操作類分享
- Access數(shù)據(jù)庫(kù)不能寫(xiě)不能更新的解決方法
- 將ACCESS數(shù)據(jù)庫(kù)遷移到SQLSERVER數(shù)據(jù)庫(kù)兩種方法(圖文詳解)
- ASP.NET 連接ACCESS數(shù)據(jù)庫(kù)的簡(jiǎn)單方法
- Access日期與時(shí)間函數(shù)匯總
- 如何讓access自動(dòng)編號(hào)從1開(kāi)始排序?qū)崿F(xiàn)方法
- ASP連接Access數(shù)據(jù)庫(kù)的幾種方法
- Mssql,Access的sql經(jīng)典SQL語(yǔ)句大全
- win2008下IIS7、IIS7.5 配置ASP+ACCESS使用環(huán)境
- SQL查詢語(yǔ)句通配符與ACCESS模糊查詢like的解決方法
- PHP has encountered an Access Violation at XXXXXX 的解決方法
- 搭建小型access數(shù)據(jù)庫(kù)實(shí)錄
相關(guān)文章
詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式
這篇文章主要介紹了詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06linux定時(shí)任務(wù)訪問(wèn)url實(shí)例
本篇文章主要介紹了linux定時(shí)任務(wù)訪問(wèn)url實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06詳解CentOS8更換yum源后出現(xiàn)同步倉(cāng)庫(kù)緩存失敗的問(wèn)題
這篇文章主要介紹了詳解CentOS8更換yum源后出現(xiàn)同步倉(cāng)庫(kù)緩存失敗的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03寶塔Linux面板之好用免費(fèi)的中文Linux VPS主機(jī)控制面板適合快速建站
本篇文章主要介紹了寶塔Linux面板之好用免費(fèi)的中文Linux VPS主機(jī)控制面板適合快速建站,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07apache time_wait連接數(shù)太多問(wèn)題解決方法
這篇文章主要介紹了apache time_wait連接數(shù)太多問(wèn)題解決方法,本文使用調(diào)整內(nèi)核參數(shù)來(lái)解決,需要的朋友可以參考下2014-11-11