小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

.htaccess詳解及.htaccess參數(shù)說(shuō)明

 momotar 2018-07-25

原文鏈接:http://blog.csdn.net/weilee2009/article/details/12905081

.htaccess文件(或者”分布式配置文件”)提供了針對(duì)目錄改變配置的方法, 即,在一個(gè)特定的文檔目錄中放置一個(gè)包含一個(gè)或多個(gè)指令的文件, 以作用于此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。管理員可以通過(guò)Apache的AllowOverride指令來(lái)設(shè)置。

概述來(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)文檔等功能。

.htaccess 詳解

 

來(lái)源網(wǎng)址: http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html

.htaccess是什么

啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來(lái)改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:AccessFileName .config 。

籠統(tǒng)地說(shuō),.htaccess可以幫我們實(shí)現(xiàn)包括:文件夾密碼保護(hù)、用戶自動(dòng)重定向、自定義錯(cuò)誤頁(yè)面、改變你的文件擴(kuò)展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件等一些功能。

工作原理

.htaccess文件(或者”分布式配置文件”)提供了針對(duì)每個(gè)目錄改變配置的方法,即在一個(gè)特定的目錄中放置一個(gè)包含指令的文件,其中的指令作用于此目錄及其所有子目錄。
說(shuō)明:
如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來(lái)改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:
AccessFileName .config
通常,.htaccess文件使用的配置語(yǔ)法和主配置文件一樣。AllowOverride指令按類(lèi)別決定了.htaccess文件中哪些指令才是有效的。如果一個(gè)指令允許在.htaccess中使用,那么在本手冊(cè)的說(shuō)明中,此指令會(huì)有一個(gè)覆蓋項(xiàng)段,其中說(shuō)明了為使此指令生效而必須在AllowOverride指令中設(shè)置的值。

(不)使用.htaccess文件的場(chǎng)合

一般情況下,不應(yīng)該使用.htaccess文件,除非你對(duì)主配置文件沒(méi)有訪問(wèn)權(quán)限。有一種很常見(jiàn)的誤解,認(rèn)為用戶認(rèn)證只能通過(guò).htaccess文件實(shí)現(xiàn),其實(shí)并不是這樣,把用戶認(rèn)證寫(xiě)在主配置文件中是完全可行的,而且是一種很好的方法。
.htaccess文件應(yīng)該被用在內(nèi)容提供者需要針對(duì)特定目錄改變服務(wù)器的配置而又沒(méi)有root權(quán)限的情況下。如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過(guò).htaccess文件自己修改配置,尤其是ISP在同一個(gè)機(jī)器上運(yùn)行了多個(gè)用戶站點(diǎn),而又希望用戶可以自己改變配置的情況下。
雖然如此,一般都應(yīng)該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。
避免使用.htaccess文件有兩個(gè)主要原因。
首先是性能。如果AllowOverride啟用了.htaccess文件,則Apache需要在每個(gè)目錄中查找.htaccess文件,因此,無(wú)論是否真正用到,啟用.htaccess都會(huì)導(dǎo)致性能的下降。另外,對(duì)每一個(gè)請(qǐng)求,都需要讀取一次.htaccess文件。
還有,Apache必須在所有上級(jí)的目錄中查找.htaccess文件,以使所有有效的指令都起作用(參見(jiàn)指令的生效),所以,如果請(qǐng)求/www/htdocs/example中的頁(yè)面,Apache必須查找以下文件:
/.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/example/.htaccess
總共要訪問(wèn)4個(gè)額外的文件,即使這些文件都不存在。(注意,這可能僅僅由于允許根目錄”/”使用.htaccess ,雖然這種情況并不多。)

其次是安全。這樣會(huì)允許用戶自己修改服務(wù)器的配置,這可能會(huì)導(dǎo)致某些意想不到的修改,所以請(qǐng)認(rèn)真考慮是否應(yīng)當(dāng)給予用戶這樣的特權(quán)。但是,如果給予用戶較少的特權(quán)而不能滿足其需要,則會(huì)帶來(lái)額外的技術(shù)支持請(qǐng)求,所以,必須明確地告訴用戶已經(jīng)給予他們的權(quán)限,說(shuō)明AllowOverride設(shè)置的值,并引導(dǎo)他們參閱相應(yīng)的說(shuō)明,以免日后生出許多麻煩。
注意,在/www/htdocs/example目錄下的.htaccess文件中放置指令,與在主配置文件中<Directory /www/htdocs/example>段中放置相同指令,是完全等效的。

/www/htdocs/example目錄下的.htaccess文件的內(nèi)容:
AddType text/example .exm
httpd.conf文件中摘錄的內(nèi)容:
<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>
但是,把配置放在主配置文件中更加高效,因?yàn)橹恍枰贏pache啟動(dòng)時(shí)讀取一次,而不是在每次文件被請(qǐng)求時(shí)都讀取。
將AllowOverride設(shè)置為none可以完全禁止使用.htaccess文件:
AllowOverride None

指令的作用范圍

.htaccess文件中的配置指令作用于.htaccess文件所在的目錄及其所有子目錄,但是很重要的、需要注意的是,其上級(jí)目錄也可能會(huì)有.htaccess文件,而指令是按查找順序依次生效的,所以一個(gè)特定目錄下的.htaccess文件中的指令可能會(huì)覆蓋其上級(jí)目錄中的.htaccess文件中的指令,即子目錄中的指令會(huì)覆蓋父目錄或者主配置文件中的指令。

疑難解答

如果在.htaccess文件中的某些指令不起作用,可能有多種原因。
最常見(jiàn)的原因是AllowOverride指令沒(méi)有被正確設(shè)置,必須確保沒(méi)有對(duì)此文件區(qū)域設(shè)置 AllowOverride None 。有一個(gè)很好的測(cè)試方法,就是在.htaccess文件隨便增加點(diǎn)無(wú)意義的垃圾內(nèi)容,如果服務(wù)器沒(méi)有返回了一個(gè)錯(cuò)誤消息,那么幾乎可以斷定設(shè)置了 AllowOverride None 。
在訪問(wèn)文檔時(shí),如果收到服務(wù)器的出錯(cuò)消息,應(yīng)該檢查Apache的錯(cuò)誤日志,可以知道.htaccess文件中哪些指令是不允許使用的,也可能會(huì)發(fā)現(xiàn)需要糾正的語(yǔ)法錯(cuò)誤。

.htaccess工具

不會(huì)寫(xiě)的朋友,在這介紹一款很不錯(cuò).htaccess的重定向—URL重寫(xiě)工具rewriting-tool

——————————————————————————–

htaccess語(yǔ)法教程

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1

# 沒(méi)有輸入文件名的默認(rèn)到到首頁(yè)
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteRule ^(/)?$ blog/index.php [L]

下面我開(kāi)始解說(shuō)一下上面的意思:

RewriteEngine On】

表示重寫(xiě)引擎開(kāi),關(guān)閉off,作用就是方便的開(kāi)啟或關(guān)閉以下的語(yǔ)句,這樣就不需要一條一條的注釋語(yǔ)句了。

RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$】

這是重寫(xiě)條件,前面%{HTTP_HOST}表示當(dāng)前訪問(wèn)的網(wǎng)址,只是指前綴部分,格式是www.不包括“http://”和“/”,^表示 字符串開(kāi)始,$表示字符串結(jié)尾,\.表示轉(zhuǎn)義的. ,如果不轉(zhuǎn)義也行,推薦轉(zhuǎn)義,防止有些服務(wù)器不支持,?表示前面括號(hào)www\.出現(xiàn)0次或1次,這句規(guī)則的意思就是如果訪問(wèn)的網(wǎng)址是或者 www.就執(zhí)行以下的語(yǔ)句,不符合就跳過(guò)。

RewriteCond %{REQUEST_URI} !^/blog/】

也是重寫(xiě)條件,%{REQUEST_URI}表示訪問(wèn)的相對(duì)地址,就是相對(duì)根目錄的地址,就是域名/后面的成分,格式上包括最前面的“/”,!表示非,這句語(yǔ)句表示訪問(wèn)的地址不以/blog/開(kāi)頭,只是開(kāi)頭^,沒(méi)有結(jié)尾$

RewriteCond %{REQUEST_FILENAME} !-f】

RewriteCond %{REQUEST_FILENAME} !-d】

這兩句語(yǔ)句的意思是請(qǐng)求的文件或路徑是不存在的,如果文件或路徑存在將返回已經(jīng)存在的文件或路徑

RewriteRule ^(.*)$ /blog/$1】

重寫(xiě)規(guī)則,最重要的部分,意思是當(dāng)上面的RewriteCond條件都滿足的時(shí)候,將會(huì)執(zhí)行此重寫(xiě)規(guī)則,^(.*)$是一個(gè)正則表達(dá)的 匹配,匹配的是當(dāng)前請(qǐng)求的URL,^(.*)$意思是匹配當(dāng)前URL任意字符,.表示任意單個(gè)字符,*表示匹配0次或N次(N>0),后面 /blog/$1是重寫(xiě)成分,意思是將前面匹配的字符重寫(xiě)成/blog/$1,這個(gè)$1表示反向匹配,引用的是前面第一個(gè)圓括號(hào)的成分,即^(.*)$中 的.* ,其實(shí)這兒將會(huì)出現(xiàn)一個(gè)問(wèn)題,后面討論。

【RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$】

RewriteRule ^(/)?$ blog/index.PHP [L]】

這兩句的意思是指請(qǐng)求的host地址是www.是,如果地址的結(jié)尾只有0個(gè)或者1個(gè)“/”時(shí),將會(huì)重寫(xiě)到子目錄下的主頁(yè),我猜想這主要因?yàn)橹貙?xiě)后的地址是不能自動(dòng)尋找主頁(yè)的,需要自己指定。

現(xiàn)在說(shuō)說(shuō)出現(xiàn)的問(wèn)題,RewriteRule ^(.*)$ /blog/$1 前部分 ^(.*)$ 將會(huì)匹配當(dāng)前請(qǐng)求的url。

例如:請(qǐng)求網(wǎng)址是http://www./a.html,到底是匹配整個(gè)http://www./a.html,還是只匹配/a.html即反斜杠后面的成分,還是只匹配a.html。

答案是:根據(jù)RewriteBase規(guī)則規(guī)定,如果rewritebase 為/,將會(huì)匹配a.html,不帶前面的反斜杠,所以上條語(yǔ)句應(yīng)該寫(xiě)成RewriteRule ^(.*)$ blog/$1(不帶/),不過(guò)實(shí)際應(yīng)用上帶上前面的反斜杠,也可以用,可能帶不帶都行。現(xiàn)在問(wèn)題出來(lái)了,如果不設(shè)置rewritebase 為/ ,將會(huì)匹配整個(gè)網(wǎng)址http://www./a.html,顯然這是錯(cuò)誤的,所以應(yīng)該添加這條:RewiteBase /

還有一個(gè)問(wèn)題是,不能保證每個(gè)人輸入的網(wǎng)址都是小寫(xiě)的,如果輸入大寫(xiě)的呢,Linux系統(tǒng)是區(qū)分大小寫(xiě)的,所以應(yīng)該在RewriteCond后添加[NC]忽略大小寫(xiě)的。

至此,完整的語(yǔ)句應(yīng)該是:

RewriteEngine On
RewiteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ blog/$1

# 沒(méi)有輸入文件名的默認(rèn)到到首頁(yè)
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ [NC]
RewriteRule ^(/)?$ blog/index.php [L]

如果后面還繼續(xù)有語(yǔ)句的,就不應(yīng)該加上最后的[L],因?yàn)檫@是表示最后一條語(yǔ)句的意思。

防盜鏈的語(yǔ)句,同樣需要添加RewiteBase /,如下:

RewriteEngine on
RewiteBase /
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !xxx.info [NC]
RewriteRule \.(jpg|gif|png|bmp|swf|jpeg)$ /error/daolian.gif [R,NC,L]

如果后面還繼續(xù)有語(yǔ)句的,就不應(yīng)該加上最后的[L],/error/daolian.gif為別人盜鏈時(shí)顯示的圖片。

下面附上簡(jiǎn)單的語(yǔ)法規(guī)則和flags

【RewriteCond語(yǔ)法】

RewriteCond TestString CondPattern [flags]

rewritecond的其他用法:

“-d”(目錄)

將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的目錄。

“-f”(常規(guī)文件)

將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的常規(guī)文件。

“-s”(非空的常規(guī)文件)

將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的、尺寸大于0的常規(guī)文件。

“-l”(符號(hào)連接)

將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的符號(hào)連接。

“-x”(可執(zhí)行)

將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的、具有可執(zhí)行權(quán)限的文件。該權(quán)限由操作系統(tǒng)檢測(cè)。

“-F”(對(duì)子請(qǐng)求存在的文件)

檢查T(mén)estString是否為一個(gè)有效的文件,而且可以在服務(wù)器當(dāng)前的訪問(wèn)控制配置下被訪問(wèn)。它使用一個(gè)內(nèi)部子請(qǐng)求來(lái)做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!

“-U”(對(duì)子請(qǐng)求存在的URL)

檢查T(mén)estString是否為一個(gè)有效的URL,而且可以在服務(wù)器當(dāng)前的訪問(wèn)控制配置下被訪問(wèn)。它使用一個(gè)內(nèi)部子請(qǐng)求來(lái)做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!

【RewriteRule語(yǔ)法:】

RewriteRule Pattern Substitution [flags]

【flags】

“chain|C”(鏈接下一規(guī)則)

此標(biāo)記使當(dāng)前規(guī)則與下一個(gè)規(guī)則相鏈接。它產(chǎn)生這樣的效果:如果一個(gè)規(guī)則被匹配,則繼續(xù)處理其后繼規(guī)則,也就是這個(gè)標(biāo)記不起作用;如果該規(guī)則不被匹配,則其后繼規(guī)則將被跳過(guò)。比如,在一個(gè)目錄級(jí)規(guī)則中執(zhí)行一個(gè)外部重定向時(shí),你可能需要?jiǎng)h除”.www”(此處不應(yīng)該出現(xiàn)”.www”)。

“cookie|CO=NAME:VAL:domain[:lifetime[:path]]”(設(shè)置cookie)

在客戶端設(shè)置一個(gè)cookie。cookie的名稱是NAME,值是VAL。domain是該cookie的域,比如”.apache.org”,可選的lifetime是cookie的有效期(分鐘),可選的path是cookie的路徑。

“env|E=VAR:VAL”(設(shè)置環(huán)境變量)

此標(biāo)記將環(huán)境變量VAR的值為VAL,VAL可以包含可擴(kuò)展的正則表達(dá)式反向引用($N和%N)。此標(biāo)記可以多次使用以設(shè)置多個(gè)變量。這些變量可以在其后許多情況下被間接引用,通常是在XSSI(<!–#echo var=”VAR”–>)或CGI($ENV{“VAR”})中,也可以在后繼的RewriteCond指令的CondPattern參數(shù)中通過(guò)%{ENV:VAR}引用。使用它可以記住從URL中剝離的信息。

“forbidden|F”(強(qiáng)制禁止URL)

強(qiáng)制禁止當(dāng)前URL,也就是立即反饋一個(gè)HTTP響應(yīng)碼403(被禁止的)。使用這個(gè)標(biāo)記,可以鏈接若干個(gè)RewriteConds來(lái)有條件地阻塞某些URL。

“gone|G”(強(qiáng)制廢棄URL)

強(qiáng)制當(dāng)前URL為已廢棄,也就是立即反饋一個(gè)HTTP響應(yīng)碼410(已廢棄的)。使用這個(gè)標(biāo)記,可以標(biāo)明頁(yè)面已經(jīng)被廢棄而不存在了。

“handler|H=Content-handler”(強(qiáng)制指定內(nèi)容處理器)

強(qiáng)自制定目標(biāo)文件的內(nèi)容處理器為Content-handler。例如,用來(lái)模擬mod_alias模塊的ScriptAlias指令,以強(qiáng)制映射文件夾內(nèi)的所有文件都由”cgi-script”處理器處理。

“l(fā)ast|L”(結(jié)尾規(guī)則)

立即停止重寫(xiě)操作,并不再應(yīng)用其他重寫(xiě)規(guī)則。它對(duì)應(yīng)于Perl中的last命令或C語(yǔ)言中的break命令。這個(gè)標(biāo)記用于阻止當(dāng)前已被重寫(xiě)的URL被后繼規(guī)則再次重寫(xiě)。例如,使用它可以重寫(xiě)根路徑的URL(“/”)為實(shí)際存在的URL(比如:”/e/www/”)。

“next|N”(從頭再來(lái))

重新執(zhí)行重寫(xiě)操作(從第一個(gè)規(guī)則重新開(kāi)始)。此時(shí)再次進(jìn)行處理的URL已經(jīng)不是原始的URL了,而是經(jīng)最后一個(gè)重寫(xiě)規(guī)則處理過(guò)的URL。它對(duì)應(yīng)于Perl中的next命令或C語(yǔ)言中的continue命令。此標(biāo)記可以重新開(kāi)始重寫(xiě)操作(立即回到循環(huán)的開(kāi)頭)。但是要小心,不要制造死循環(huán)!

“nocase|NC”(忽略大小寫(xiě))

它使Pattern忽略大小寫(xiě),也就是在Pattern與當(dāng)前URL匹配時(shí),”A-Z”和”a-z”沒(méi)有區(qū)別。

“noescape|NE”(在輸出中不對(duì)URI進(jìn)行轉(zhuǎn)義)

此標(biāo)記阻止mod_rewrite對(duì)重寫(xiě)結(jié)果應(yīng)用常規(guī)的URI轉(zhuǎn)義規(guī)則。 一般情況下,特殊字符(“%”, “$”, “;”等)會(huì)被轉(zhuǎn)義為等值的十六進(jìn)制編碼(“%25′, “%24′, “%3B”等)。此標(biāo)記可以阻止這樣的轉(zhuǎn)義,以允許百分號(hào)等符號(hào)出現(xiàn)在輸出中,比如:

RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]

可以使”/foo/zed轉(zhuǎn)向到一個(gè)安全的請(qǐng)求”/bar?arg=P1=zed”。

“nosubreq|NS”(不對(duì)內(nèi)部子請(qǐng)求進(jìn)行處理)

在當(dāng)前請(qǐng)求是一個(gè)內(nèi)部子請(qǐng)求時(shí),此標(biāo)記強(qiáng)制重寫(xiě)引擎跳過(guò)該重寫(xiě)規(guī)則。比如,在mod_include試圖搜索目錄默認(rèn)文件(index.xxx)時(shí),Apache會(huì)在內(nèi)部產(chǎn)生子請(qǐng)求。對(duì)于子請(qǐng)求,重寫(xiě)規(guī)則不一定有用,而且如果整個(gè)規(guī)則集都起作用,它甚至可能會(huì)引發(fā)錯(cuò)誤。所以,可以用這個(gè)標(biāo)記來(lái)排除某些規(guī)則。

使用原則:如果你為URL添加了CGI腳本前綴,以強(qiáng)制它們由CGI腳本處理,但對(duì)子請(qǐng)求處理的出錯(cuò)率(或者資源開(kāi)銷(xiāo))很高,在這種情況下,可以使用這個(gè)標(biāo)記。

“proxy|P”(強(qiáng)制為代理)

此標(biāo)記使替換成分被內(nèi)部地強(qiáng)制作為代理請(qǐng)求發(fā)送,并立即中斷重寫(xiě)處理,然后把處理移交給mod_proxy模塊。你必須確保此替換串是一個(gè)能夠被mod_proxy處理的有效URI(比如以http://hostname開(kāi)頭),否則將得到一個(gè)代理模塊返回的錯(cuò)誤。使用這個(gè)標(biāo)記,可以把某些遠(yuǎn)程成分映射到本地服務(wù)器域名空間,從而增強(qiáng)了ProxyPass指令的功能。

注意:要使用這個(gè)功能,必須已經(jīng)啟用了mod_proxy模塊。

“passthrough|PT”(移交給下一個(gè)處理器)

此標(biāo)記強(qiáng)制重寫(xiě)引擎將內(nèi)部request_rec結(jié)構(gòu)中的uri字段設(shè)置為filename字段的值,這個(gè)小小的修改使得RewriteRule指令的輸出能夠被(從URI轉(zhuǎn)換到文件名的)Alias, ScriptAlias, Redirect等指令進(jìn)行后續(xù)處理[原文:This flag is just a hack to enable post-processing of the output of RewriteRule directives, using Alias, ScriptAlias, Redirect, and other directives from various URI-to-filename translators.]。舉一個(gè)能說(shuō)明其含義的例子: 如果要將/abc重寫(xiě)為/def, 然后再使用mod_alias將/def轉(zhuǎn)換為/ghi,可以這樣:

RewriteRule ^/abc(.*) /def$1 [PT]

Alias /def /ghi

如果省略了PT標(biāo)記,雖然將uri=/abc/…重寫(xiě)為filename=/def/…的部分運(yùn)作正常,但是后續(xù)的mod_alias在試圖將URI轉(zhuǎn)換到文件名時(shí)會(huì)遭遇失效。

注意:如果需要混合使用多個(gè)將URI轉(zhuǎn)換到文件名的模塊時(shí),就必須使用這個(gè)標(biāo)記。。此處混合使用mod_alias和mod_rewrite就是個(gè)典型的例子。

“qsappend|QSA”(追加查詢字符串)

此標(biāo)記強(qiáng)制重寫(xiě)引擎在已有的替換字符串中追加一個(gè)查詢字符串,而不是簡(jiǎn)單的替換。如果需要通過(guò)重寫(xiě)規(guī)則在請(qǐng)求串中增加信息,就可以使用這個(gè)標(biāo)記。

“redirect|R [=code]“(強(qiáng)制重定向)

若Substitution以http://thishost[:thisport]/(使新的URL成為一個(gè)URI)開(kāi)頭,可以強(qiáng)制性執(zhí)行一個(gè)外部重定向。如果沒(méi)有指定code,則產(chǎn)生一個(gè)HTTP響應(yīng)碼302(臨時(shí)性移動(dòng))。如果需要使用在300-400范圍內(nèi)的其他響應(yīng)代碼,只需在此指定即可(或使用下列符號(hào)名稱之一:temp(默認(rèn)), permanent, seeother)。使用它可以把規(guī)范化的URL反饋給客戶端,如將”/~”重寫(xiě)為”/u/”,或始終對(duì)/u/user加上斜杠,等等。

注意:在使用這個(gè)標(biāo)記時(shí),必須確保該替換字段是一個(gè)有效的URL。否則,它會(huì)指向一個(gè)無(wú)效的位置!并且要記住,此標(biāo)記本身只是對(duì)URL加上http://thishost[:thisport]/前綴,重寫(xiě)操作仍然會(huì)繼續(xù)進(jìn)行。通常,你還會(huì)希望停止重寫(xiě)操作而立即重定向,那么就還需要使用”L’標(biāo)記。

“skip|S=num”(跳過(guò)后繼規(guī)則)

此標(biāo)記強(qiáng)制重寫(xiě)引擎跳過(guò)當(dāng)前匹配規(guī)則之后的num個(gè)規(guī)則。它可以模擬if-then-else結(jié)構(gòu):最后一個(gè)規(guī)則是then從句,而被跳過(guò)的skip=N個(gè)規(guī)則是else從句。注意:它和”chain|C”標(biāo)記是不同的!

“type|T=MIME-type”(強(qiáng)制MIME類(lèi)型)

強(qiáng)制目標(biāo)文件的MIME類(lèi)型為MIME-type,可以用來(lái)基于某些特定條件強(qiáng)制設(shè)置內(nèi)容類(lèi)型。比如,下面的指令可以讓.php文件在以.phps擴(kuò)展名調(diào)用的情況下由mod_php按照PHP源代碼的MIME類(lèi)型(application/x-httpd-php-source)顯示:

RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]

.htaccess實(shí)例

http:///forum.php?mod=viewthread&tid=7455&page=1&extra=#pid41053

http://www.chinaz.com/web/2010/0415/111514.shtml

參考:http://baike.baidu.com/view/91163.htm

http://hi.baidu.com/wojiubaibudu/item/4b3513c74a8fe47aced4f817

.htaccess rewrite 規(guī)則詳細(xì)說(shuō)明

 

來(lái)源網(wǎng)址: http://www./htaccess-rewrite.html

作者: freemouse 日期 2010年07月22日 | 可以轉(zhuǎn)載, 但必須以超鏈接形式標(biāo)明文章原始出處和作者信息及版權(quán)聲明

網(wǎng)址: http://www./htaccess-rewrite.html

用Apache虛擬主機(jī)的朋友很多,apache提供的.htaccess模塊可以為每個(gè)虛擬主機(jī)設(shè)定rewrite規(guī)則,這對(duì)網(wǎng)站SEO優(yōu)化相當(dāng)有用,同時(shí)也改善了用戶體驗(yàn)。國(guó)內(nèi)的虛擬機(jī)一般不提供.htaccess功能(據(jù)我所知,discuz的主機(jī)好像提供此功能),而在國(guó)外主機(jī)中,.htaccess功能似乎是標(biāo)配,筆者的Blog架在MT上,支持.htaccess,每次看到一堆別人寫(xiě)好了的.htaccess設(shè)置,很多命令都不甚了了,查看、修改起來(lái)很不方便,痛定思痛,潛心學(xué)習(xí)一下,知其所以然嘛~

學(xué)習(xí)前提:(不會(huì)的朋友要學(xué)習(xí)一下,才能更好的理解下面的文字呢)

  • Linux基礎(chǔ)(不會(huì)也沒(méi)事啦,寫(xiě)個(gè).htaccess沒(méi)必要大費(fèi)周折啦,推薦:鳥(niǎo)哥私房菜linux基礎(chǔ))
  • 正則表達(dá)式(Rewrite規(guī)則建立在正則的基礎(chǔ)之上,推薦:正則表達(dá)式30分鐘入門(mén)教程)

rewrite的語(yǔ)法格式

  1. RewriteEngine On #要想rewrite起作用,必須要寫(xiě)上哦
  2. RewriteBase url-path #設(shè)定基準(zhǔn)目錄,例如希望對(duì)根目錄下的文件rewrtie,就是”/”
  3. RewriteCond test-string condPattern #寫(xiě)在RewriteRule之前,可以有一或N條,用于測(cè)試rewrite的匹配條件,具體怎么寫(xiě),后面會(huì)詳細(xì)說(shuō)到。
  4. RewriteRule Pattern Substitution #規(guī)則

RewriteEngine On|Off

RewriteEngine 用于開(kāi)啟或停用rewrite功能。

rewrite configurations 不會(huì)自動(dòng)繼承,因此你得給每個(gè)你想用 rewrite功能的虛擬主機(jī)目錄中加上這個(gè)指令。

RewriteBase URL-path

RewriteBase用于設(shè)定重寫(xiě)的基準(zhǔn)URL。在下文中,你可以看見(jiàn)RewriteRule可以用于目錄級(jí)的配置文件中 (.htaccess)并在局部范圍內(nèi)起作用,即規(guī)則實(shí)際處理的只是剝離了本地路徑前綴的一部分。處理結(jié)束后,這個(gè)路徑會(huì)被自動(dòng)地附著回去。默認(rèn)值 是”RewriteBase physical-directory-path”。

在對(duì)一個(gè)新的URL進(jìn)行替換時(shí),此模塊必須把這個(gè)URL重新注入到服務(wù)器處理中。為此,它必須知道其對(duì)應(yīng)的URL前綴或者說(shuō)URL基準(zhǔn)。通常,此前綴就是 對(duì)應(yīng)的文件路徑。但是,大多數(shù)網(wǎng)站URL不是直接對(duì)應(yīng)于其物理文件路徑的,因而一般不能做這樣的假定! 所以在這種情況下,就必須用RewriteBase指令來(lái)指定正確的URL前綴。

如果你的網(wǎng)站服務(wù)器URL不是與物理文件路徑直接對(duì)應(yīng)的,而又需要使用RewriteBase指令,則必須在每個(gè)對(duì)應(yīng)的.htaccess文件中指定 RewriteRule 。

RewriteCond TestString CondPattern [flags]

RewriteCond指令定義了一個(gè)規(guī)則的條件,即,在一個(gè)RewriteRule指令之前有一個(gè)或多個(gè)RewriteCond指令。 條件之后的重寫(xiě)規(guī)則僅在當(dāng)前URI與pattern匹配并且符合這些條件的時(shí)候才會(huì)起作用。

TestString是一個(gè)純文本的字符串,但是還可以包含下列可擴(kuò)展的成分:

  1. RewriteRule反向引用: 引用方法是 $N  (0 <= N <= 9) 引用當(dāng)前(帶有若干RewriteCond指令的)RewriteRule中的 與pattern匹配的分組成分(圓括號(hào)!)。
  2. RewriteCond反向引用: 引用方法是 %N  (1 <= N <= 9) 引用當(dāng)前若干RewriteCond條件中最后符合的條件中的分組成分(圓括號(hào)!)。
  3. RewriteMap 擴(kuò)展: 引用方法是 ${mapname:key|default}
  4. 服務(wù)器變量: 引用方法是 %{ NAME_OF_VARIABLE }  這個(gè)是我們最常使用到的功能

NAME_OF_VARIABLE具體數(shù)值見(jiàn)下表:

HTTP headers:

connection & request:

HTTP_USER_AGENT

HTTP_REFERER

HTTP_COOKIE

HTTP_FORWARDED

HTTP_HOST

HTTP_PROXY_CONNECTION

HTTP_ACCEPT

REMOTE_ADDR

REMOTE_HOST

REMOTE_USER

REMOTE_IDENT

REQUEST_METHOD

SCRIPT_FILENAME

PATH_INFO

QUERY_STRING

AUTH_TYPE

server internals:

system stuff:

specials:

DOCUMENT_ROOT

SERVER_ADMIN

SERVER_NAME

SERVER_ADDR

SERVER_PORT

SERVER_PROTOCOL

SERVER_SOFTWARE

TIME_YEAR

TIME_MON

TIME_DAY

TIME_HOUR

TIME_MIN

TIME_SEC

TIME_WDAY

TIME

API_VERSION

THE_REQUEST

REQUEST_URI

REQUEST_FILENAME

IS_SUBREQ

這些都對(duì)應(yīng)于類(lèi)似命名的HTTP MIME頭、Apache服務(wù)器的C變量以及Unix系統(tǒng)中的 struct tm字段,大多數(shù)都在其他的手冊(cè)或者CGI規(guī)范中有所講述。 而其中為mod_rewrite所特有的變量有:

IS_SUBREQ

如果正在處理的請(qǐng)求是一個(gè)子請(qǐng)求,它包含字符串”true”,否則就是”false”。 模塊為了解析URI中的附加文件,有可能會(huì)產(chǎn)生子請(qǐng)求。

API_VERSION

這是正在使用的httpd中(服務(wù)器和模塊之間內(nèi)部接口)的Apache模塊API的版本, 其定義位于include/ap_mmn.h中。此模塊版本對(duì)應(yīng)于正在使用的Apache的版本 (比如,在Apache 1.3.14的發(fā)行版中,這個(gè)值是19990320:10)。 通常,對(duì)它感興趣的是模塊的作者。

THE_REQUEST

這是由瀏覽器發(fā)送給服務(wù)器的完整的HTTP請(qǐng)求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何瀏覽器發(fā)送的附加頭信息。

REQUEST_URI

這是在HTTP請(qǐng)求行中所請(qǐng)求的資源。(比如上述例子中的”/index.html”.)

REQUEST_FILENAME

這是與請(qǐng)求相匹配的完整的本地文件系統(tǒng)的文件路徑名或描述.

CondPattern是條件pattern, 即, 一個(gè)應(yīng)用于當(dāng)前實(shí)例TestString的正則表達(dá)式, 即, TestString將會(huì)被計(jì)算然后與CondPattern匹配.

注意:CondPattern是一個(gè)兼容perl的正則表達(dá)式, 但是還有若干補(bǔ)充:

  1. 可以在pattern串中使用’
    1
    !

    ‘ 字符(驚嘆號(hào))來(lái)實(shí)現(xiàn)匹配的反轉(zhuǎn)

RewriteOptions Options

1
RewriteOptions

指令為當(dāng)前服務(wù)器級(jí)和目錄級(jí)的配置設(shè)置一些選項(xiàng)。 Option可以是下列值之一:

1
inherit
此值強(qiáng)制當(dāng)前配置可以繼承其父配置。 在虛擬主機(jī)級(jí)配置中,它意味著主服務(wù)器的映射表、條件和規(guī)則可以被繼承。 在目錄級(jí)配置中,它意味著其父目錄的
1
.htaccess

中的條件和規(guī)則可以被繼承。

1
MaxRedirects=<var>number</var>
為了避免目錄級(jí)
1
RewriteRule

的無(wú)休止的內(nèi)部重定向, 在此類(lèi)重定向和500內(nèi)部服務(wù)器錯(cuò)誤次數(shù)達(dá)到一個(gè)最大值的時(shí)候,

1
mod_rewrite

會(huì)停止對(duì)此請(qǐng)求的處理。 如果你確實(shí)需要對(duì)每個(gè)請(qǐng)求允許大于10次的內(nèi)部重定向,可以增大這個(gè)值。

RewriteRule Pattern Substitution [flags]

1
RewriteRule

指令是重寫(xiě)引擎的根本。此指令可以多次使用。 每個(gè)指令定義一個(gè)簡(jiǎn)單的重寫(xiě)規(guī)則。這些規(guī)則的定義順序尤為重要, 因?yàn)?,在運(yùn)行時(shí)刻,規(guī)則是按這個(gè)順序逐一生效的.

Pattern是一個(gè)作用于當(dāng)前URL的兼容perl的正則表達(dá)式。

此外,還可以使用否字符(‘

1
!

‘)的pattern前綴,以實(shí)現(xiàn)pattern的反轉(zhuǎn)。但是,需要注意的是使用否字符以反轉(zhuǎn)pattern時(shí),pattern中不能使用分組的通配成分;即$N。

重寫(xiě)規(guī)則中的Substitution是, 當(dāng)原始URL與Pattern相匹配時(shí),用以替代(或替換)的字符串。除了純文本,還可以使用

  • 1
    $N

    反向引用RewriteRule的pattern

  • 1
    %N

    反向引用最后匹配的RewriteCond pattern

  • 規(guī)則條件測(cè)試字符串中(
    1
    %{VARNAME}

    )的服務(wù)器變量

  • 映射函數(shù)調(diào)用(
    1
    ${mapname:key|default})
下面給出幾個(gè)完整的例子供各位參考:

一、防盜鏈功能

只這四行就實(shí)現(xiàn)了防盜鏈?zhǔn)遣皇呛苌衿鎊_^,編寫(xiě)起來(lái)是不是又覺(jué)得復(fù)雜。

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

二、網(wǎng)址規(guī)范化

這個(gè)是把所有二級(jí)域名都重定向到www.的例子,現(xiàn)在看來(lái)是不是很簡(jiǎn)單了?

Options +FollowSymLinks

rewriteEngine on

rewriteCond %{http_host} ^ [NC]

rewriteRule ^(.*)$ http://www./$1 [R=301,L]

三、臨時(shí)錯(cuò)誤頁(yè)面

當(dāng)你的網(wǎng)站在升級(jí)、修改的時(shí)候,你最好讓訪客轉(zhuǎn)到指定的頁(yè)面,而不是沒(méi)做完的頁(yè)面或者是錯(cuò)誤頁(yè)。

RewriteEngine on

RewriteCond %{REQUEST_URI} !/maintenance.html$

RewriteCond %{REMOTE_ADDR} !^123.123.123.123

RewriteRule $ /error.html [R=302,L]

四、重定向RSS地址到FeedSky

除了可以更改模板里的RSS地址外,.htaccess也能實(shí)現(xiàn)RSS地址的更改,并更加方便。

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} !FeedSky [NC]

RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]

RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feed./yours

=========================================================================================

附錄:flags

  1. ‘redirect|R [=code]‘ (強(qiáng)制重定向 redirect)

    以http://thishost[:thisport]/(使新的URL成為一個(gè)URI) 為前綴的Substitution可以強(qiáng)制性執(zhí)行一個(gè)外部重定向。 如果code沒(méi)有指定,則產(chǎn)生一個(gè)HTTP響應(yīng)代碼302(臨時(shí)性移動(dòng))。 如果需要使用在300-400范圍內(nèi)的其他響應(yīng)代碼,只需在此指定這個(gè)數(shù)值即可, 另外,還可以使用下列符號(hào)名稱之一: temp (默認(rèn)的), permanent, seeother. 用它可以把規(guī)范化的URL反饋給客戶端,如, 重寫(xiě)“/~”為 “/u/”,或?qū)?u/user加上斜杠,等等。 注意: 在使用這個(gè)標(biāo)記時(shí),必須確保該替換字段是一個(gè)有效的URL! 否則,它會(huì)指向一個(gè)無(wú)效的位置! 并且要記住,此標(biāo)記本身只是對(duì)URL加上 http://thishost[:thisport]/的前綴,重寫(xiě)操作仍然會(huì)繼續(xù)。 通常,你會(huì)希望停止重寫(xiě)操作而立即重定向,則還需要使用’L’標(biāo)記.

  2. ‘forbidden|F’ (強(qiáng)制URL為被禁止的 forbidden)

    強(qiáng)制當(dāng)前URL為被禁止的,即,立即反饋一個(gè)HTTP響應(yīng)代碼403(被禁止的)。 使用這個(gè)標(biāo)記,可以鏈接若干RewriteConds以有條件地阻塞某些URL。

  3. ‘gone|G’ (強(qiáng)制URL為已廢棄的 gone)

    強(qiáng)制當(dāng)前URL為已廢棄的,即,立即反饋一個(gè)HTTP響應(yīng)代碼410(已廢棄的)。 使用這個(gè)標(biāo)記,可以標(biāo)明頁(yè)面已經(jīng)被廢棄而不存在了.

  4. ‘proxy|P’ (強(qiáng)制為代理 proxy)

    此標(biāo)記使替換成分被內(nèi)部地強(qiáng)制為代理請(qǐng)求,并立即(即, 重寫(xiě)規(guī)則處理立即中斷)把處理移交給代理模塊。 你必須確保此替換串是一個(gè)有效的(比如常見(jiàn)的以 http://hostname開(kāi)頭的)能夠?yàn)锳pache代理模塊所處理的URI。 使用這個(gè)標(biāo)記,可以把某些遠(yuǎn)程成分映射到本地服務(wù)器名稱空間, 從而增強(qiáng)了ProxyPass指令的功能。 注意: 要使用這個(gè)功能,代理模塊必須編譯在Apache服務(wù)器中。 如果你不能確定,可以檢查“httpd -l”的輸出中是否有mod_proxy.c。 如果有,則mod_rewrite可以使用這個(gè)功能; 如果沒(méi)有,則必須啟用mod_proxy并重新編譯“httpd”程序。

  5. ‘last|L’ (最后一個(gè)規(guī)則 last)

    立即停止重寫(xiě)操作,并不再應(yīng)用其他重寫(xiě)規(guī)則。 它對(duì)應(yīng)于Perl中的last命令或C語(yǔ)言中的break命令。 這個(gè)標(biāo)記可以阻止當(dāng)前已被重寫(xiě)的URL為其后繼的規(guī)則所重寫(xiě)。 舉例,使用它可以重寫(xiě)根路徑的URL(‘/’)為實(shí)際存在的URL, 比如, ‘/e/www/’.

  6. ‘next|N’ (重新執(zhí)行 next round)

    重新執(zhí)行重寫(xiě)操作(從第一個(gè)規(guī)則重新開(kāi)始). 這時(shí)再次進(jìn)行處理的URL已經(jīng)不是原始的URL了,而是經(jīng)最后一個(gè)重寫(xiě)規(guī)則處理的URL。 它對(duì)應(yīng)于Perl中的next命令或C語(yǔ)言中的continue命令。 此標(biāo)記可以重新開(kāi)始重寫(xiě)操作,即, 立即回到循環(huán)的頭部。 但是要小心,不要制造死循環(huán)!

  7. ‘chain|C’ (與下一個(gè)規(guī)則相鏈接 chained)

    此標(biāo)記使當(dāng)前規(guī)則與下一個(gè)(其本身又可以與其后繼規(guī)則相鏈接的, 并可以如此反復(fù)的)規(guī)則相鏈接。 它產(chǎn)生這樣一個(gè)效果: 如果一個(gè)規(guī)則被匹配,通常會(huì)繼續(xù)處理其后繼規(guī)則, 即,這個(gè)標(biāo)記不起作用;如果規(guī)則不能被匹配, 則其后繼的鏈接的規(guī)則會(huì)被忽略。比如,在執(zhí)行一個(gè)外部重定向時(shí), 對(duì)一個(gè)目錄級(jí)規(guī)則集,你可能需要?jiǎng)h除“.www” (此處不應(yīng)該出現(xiàn)“.www”的)。

  8. ‘type|T=MIME-type’ (強(qiáng)制MIME類(lèi)型 type)

    強(qiáng)制目標(biāo)文件的MIME類(lèi)型為MIME-type。 比如,它可以用于模擬mod_alias中的ScriptAlias指令, 以內(nèi)部地強(qiáng)制被映射目錄中的所有文件的MIME類(lèi)型為“application/x-httpd-cgi”.

  9. ‘nosubreq|NS’ (僅用于不對(duì)內(nèi)部子請(qǐng)求進(jìn)行處理 no internal sub-request)

    在當(dāng)前請(qǐng)求是一個(gè)內(nèi)部子請(qǐng)求時(shí),此標(biāo)記強(qiáng)制重寫(xiě)引擎跳過(guò)該重寫(xiě)規(guī)則。 比如,在mod_include試圖搜索可能的目錄默認(rèn)文件(index.xxx)時(shí), Apache會(huì)內(nèi)部地產(chǎn)生子請(qǐng)求。對(duì)子請(qǐng)求,它不一定有用的,而且如果整個(gè)規(guī)則集都起作用, 它甚至可能會(huì)引發(fā)錯(cuò)誤。所以,可以用這個(gè)標(biāo)記來(lái)排除某些規(guī)則。 根據(jù)你的需要遵循以下原則: 如果你使用了有CGI腳本的URL前綴,以強(qiáng)制它們由CGI腳本處理, 而對(duì)子請(qǐng)求處理的出錯(cuò)率(或者開(kāi)銷(xiāo))很高,在這種情況下,可以使用這個(gè)標(biāo)記。

  10. ‘nocase|NC’ (忽略大小寫(xiě) no case)

    它使Pattern忽略大小寫(xiě),即, 在Pattern與當(dāng)前URL匹配時(shí),’A-Z’ 和’a-z’沒(méi)有區(qū)別。

  11. ‘qsappend|QSA’ (追加請(qǐng)求串 query string append)

    此標(biāo)記強(qiáng)制重寫(xiě)引擎在已有的替換串中追加一個(gè)請(qǐng)求串,而不是簡(jiǎn)單的替換。 如果需要通過(guò)重寫(xiě)規(guī)則在請(qǐng)求串中增加信息,就可以使用這個(gè)標(biāo)記。

  12. ‘noescape|NE’ (在輸出中不對(duì)URI作轉(zhuǎn)義 no URI escaping)

    此標(biāo)記阻止mod_rewrite對(duì)重寫(xiě)結(jié)果應(yīng)用常規(guī)的URI轉(zhuǎn)義規(guī)則。 一般情況下,特殊字符(如’%’, ‘$’, ‘;’等)會(huì)被轉(zhuǎn)義為等值的十六進(jìn)制編碼。 此標(biāo)記可以阻止這樣的轉(zhuǎn)義,以允許百分號(hào)等符號(hào)出現(xiàn)在輸出中,如: RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]

    可以使’/foo/zed’轉(zhuǎn)向到一個(gè)安全的請(qǐng)求’/bar?arg=P1=zed’.

  13. ‘passthrough|PT’ (移交給下一個(gè)處理器 pass through)

    此標(biāo)記強(qiáng)制重寫(xiě)引擎將內(nèi)部結(jié)構(gòu)request_rec中的uri字段設(shè)置為 filename字段的值,它只是一個(gè)小修改,使之能對(duì)來(lái)自其他URI到文件名翻譯器的 Alias,ScriptAlias, Redirect 等指令的輸出進(jìn)行后續(xù)處理。舉一個(gè)能說(shuō)明其含義的例子: 如果要通過(guò)mod_rewrite的重寫(xiě)引擎重寫(xiě)/abc為/def, 然后通過(guò)mod_alias使/def轉(zhuǎn)變?yōu)?ghi,可以這樣: RewriteRule ^/abc(.*) /def$1 [PT]

    Alias /def /ghi

    如果省略了PT標(biāo)記,雖然mod_rewrite運(yùn)作正常, 即, 作為一個(gè)使用API的URI到文件名翻譯器, 它可以重寫(xiě)uri=/abc/…為filename=/def/…, 但是,后續(xù)的mod_alias在試圖作URI到文件名的翻譯時(shí),則會(huì)失效。

    注意: 如果需要混合使用不同的包含URI到文件名翻譯器的模塊時(shí), 就必須使用這個(gè)標(biāo)記?;旌鲜褂胢od_alias和mod_rewrite就是個(gè)典型的例子。

    For Apache hackers

    如果當(dāng)前Apache API除了URI到文件名hook之外,還有一個(gè)文件名到文件名的hook, 就不需要這個(gè)標(biāo)記了! 但是,如果沒(méi)有這樣一個(gè)hook,則此標(biāo)記是唯一的解決方案。 Apache Group討論過(guò)這個(gè)問(wèn)題,并在Apache 2.0 版本中會(huì)增加這樣一個(gè)hook。

  14. ’skip|S=num’ (跳過(guò)后繼的規(guī)則 skip)

    此標(biāo)記強(qiáng)制重寫(xiě)引擎跳過(guò)當(dāng)前匹配規(guī)則后繼的num個(gè)規(guī)則。 它可以實(shí)現(xiàn)一個(gè)偽if-then-else的構(gòu)造: 最后一個(gè)規(guī)則是then從句,而被跳過(guò)的skip=N個(gè)規(guī)則是else從句. (它和’chain|C’標(biāo)記是不同的!)

  15. ‘env|E=VAR:VAL’ (設(shè)置環(huán)境變量 environment variable)

    此標(biāo)記使環(huán)境變量VAR的值為VAL, VAL可以包含可擴(kuò)展的反向引用的正則表達(dá)式$N和%N。 此標(biāo)記可以多次使用以設(shè)置多個(gè)變量。 這些變量可以在其后許多情況下被間接引用,但通常是在XSSI (via or CGI (如 $ENV{‘VAR’})中, 也可以在后繼的RewriteCond指令的pattern中通過(guò)%{ENV:VAR}作引用。 使用它可以從URL中剝離并記住一些信息。

  16. ‘cookie|CO=NAME:VAL:domain[:lifetime[:path]]’ (設(shè)置cookie)

    它在客戶端瀏覽器上設(shè)置一個(gè)cookie。 cookie的名稱是NAME,其值是VAL。 domain字段是該cookie的域,比如’.apache.org’, 可選的lifetime是cookie生命期的分鐘數(shù), 可選的path是cookie的路徑。

深入閱讀:http:///man/newsoft/ApacheManual/mod/mod_rewrite.html

全面理解.htaccess語(yǔ)法中RewriteCond和RewriteRule意義

 

來(lái)源網(wǎng)址: http://blog.sina.com.cn/s/blog_7048e38101017xdx.html

(2012-08-13 10:38:44)

關(guān)于.htaccess偽靜態(tài)的使用,章郎蟲(chóng)一直沒(méi)有好好想過(guò)。以前一直是在網(wǎng)上找現(xiàn)成的,然后修改下網(wǎng)址實(shí)現(xiàn)重定向。今天我專門(mén)找資料看了下RewriteCond和RewriteRule的意思及使用方法。然后回過(guò)頭看《網(wǎng)站地址更改之htaccess和php的301重定向》這篇文章,終于有些理解?,F(xiàn)在不用一直找現(xiàn)成的代碼,也可以自己寫(xiě)一些規(guī)則實(shí)現(xiàn)重定向了。下面就簡(jiǎn)單的介紹下他們的用法。

RewriteCond的語(yǔ)法

RewriteCond TestString CondPattern [Flags]

其中的TestString是指一個(gè)文本格式的條件,例子中用的是環(huán)境變量名HTTP_HOST所包含的內(nèi)容(Name= Value),這是一個(gè)map(鍵值對(duì))格式的數(shù)據(jù)類(lèi)型。

CondPattern是條件參數(shù),這兒以第一個(gè)例子為例,就是abc.com。

Flags標(biāo)識(shí)是是第三個(gè)參數(shù),可以用來(lái)緊跟下一個(gè)條件,這兒用OR表示或者,如果沒(méi)有[Flags],則用隱含的AND,表示并且。其它的還可以NC等等,表示忽略大小寫(xiě)

RewriteCond就像我們程序中的if語(yǔ)句一樣,表示如果符合某個(gè)或某幾個(gè)條件則執(zhí)行RewriteCond下面緊鄰的RewriteRule語(yǔ)句,這就是RewriteCond最原始、基礎(chǔ)的功能,為了方便理解,下面來(lái)看看幾個(gè)例子。

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5.0.*

RewriteRule index.php index.m.php

RewriteCond %{HTTP_USER_AGENT} ^Lynx.*

RewriteRule index.php index.L.php

RewriteRule index.php index.b.php

上面語(yǔ)句的作用是當(dāng)你是用FF瀏覽器訪問(wèn)index.php這個(gè)文件的時(shí)候,會(huì)自動(dòng)讓你訪問(wèn)到index.m.php這個(gè)文件,當(dāng)你是用一些移動(dòng)終端訪問(wèn) 的 時(shí)候,會(huì)讓你對(duì)index.php這個(gè)文件的訪問(wèn)實(shí)際訪問(wèn)的是index.L.php去,如果你是用其它的瀏覽器訪問(wèn)的時(shí)候,會(huì)讓你跳到 index.b.php。

RewriteRule的語(yǔ)法

RewriteRule Pattern Substitution [Flags]

其中的Pattern就是參數(shù),一般為一些文件的擴(kuò)展名,Substitution是用來(lái)替換前面用的,這兒的Flags,常用的R表示 redirect(強(qiáng)制重定向),F(xiàn)表示forbidden(禁止訪問(wèn)),L表示last(最后),通常當(dāng)你希望停止重寫(xiě)操作而立即重定向時(shí),可用它。

.htaccess中用到的正則

元字符^(和數(shù)字6在同一個(gè)鍵位上的符號(hào))和$都匹配一個(gè)位置,這和\b有點(diǎn)類(lèi)似。

^匹配你要用來(lái)查找的字符串的開(kāi)頭

$匹配結(jié)尾。

比如一個(gè)網(wǎng)站如果要求你填寫(xiě)的QQ號(hào)必須為5位到12位數(shù)字時(shí),可以使用:^\d{5,12}$。

如果你對(duì)正則表達(dá)式不是很明白,可以看下正則表達(dá)式的教程。

Source from: http://www./897.html

 

URL重寫(xiě) htaccess文件寫(xiě)法的10個(gè)技巧

 

來(lái)源網(wǎng)址: http://blog.sina.com.cn/s/blog_7069146d01015ikf.html

(2012-07-26 03:25:44)

“.htaccess”文件往往被網(wǎng)頁(yè)設(shè)計(jì)師們忽略。假如你還不知道什么是htaccess的話,你可以去查一下wikipedia。它是目錄級(jí)別的配置文件,有常用的網(wǎng)頁(yè)服務(wù)器支持這種配置,例如Apache。下面我將列出10條有用的.htaccess配置技巧。

1. 反盜鏈

那些盜用了你的內(nèi)容,還不愿意自己存儲(chǔ)圖片的網(wǎng)站是無(wú)恥的。你可以通過(guò)以下配置來(lái)放置別人盜用你的圖片:

RewriteBase /

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?/.*$ [NC]

RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2. 防止目錄瀏覽

有時(shí)候目錄瀏覽是有用的,但大部分情況會(huì)有安全問(wèn)題。為了讓你的網(wǎng)站更安全,你可以通過(guò)htaccess文件來(lái)禁用這個(gè)功能:

Options All -Indexes

3. SEO友好的301永久重定向

這一招是我常用的。每次我更改網(wǎng)站URL結(jié)構(gòu)的時(shí)候,我都會(huì)做301重定向:

Redirect 301 http://www./article.html http://www./archives/article 4. 顯示個(gè)性化的 404 錯(cuò)誤頁(yè)面

當(dāng)用戶訪問(wèn)了一個(gè)不存在的頁(yè)面的時(shí)候,網(wǎng)頁(yè)服務(wù)器會(huì)顯示“404 file not found”錯(cuò)誤。有很多CMS可以讓你設(shè)置自定義的錯(cuò)誤頁(yè)面,但最簡(jiǎn)單的方法是更改htaccess:

ErrorDocument 404 /404.html

5. 設(shè)置目錄的默認(rèn)頁(yè)面

假如你需要為不同的目錄設(shè)置不同的默認(rèn)頁(yè)面,你可以很容易的通過(guò) .htaccess 實(shí)現(xiàn):

DirectoryIndex about.html

6. 基于referer來(lái)限制網(wǎng)站訪問(wèn)

站長(zhǎng)通常不會(huì)限制網(wǎng)站訪問(wèn),但是當(dāng)你發(fā)現(xiàn)有一些網(wǎng)站盡給你帶來(lái)垃圾流量的話,你就應(yīng)該屏蔽他們:

<IfModule mod_rewrite.c>

RewriteEngine on  RewriteCond %{HTTP_REFERER} spamteam.com [NC,OR]

RewriteCond %{HTTP_REFERER} trollteam.com [NC,OR]

RewriteRule .* – [F]

</ifModule>

7. 限制PHP上傳文件大小

這招在共享空間的服務(wù)器上很有用,可以讓我的用戶上傳更大的文件。第一個(gè)是設(shè)置最大的上傳文件大小,第二個(gè)是設(shè)置最大的POST請(qǐng)求大小,第三個(gè)PHP腳本最長(zhǎng)的執(zhí)行時(shí)間,最后一個(gè)是腳本解析上傳文件的最長(zhǎng)時(shí)間:

php_value upload_max_filesize 20M

php_value post_max_size 20M

php_value max_execution_time 200

php_value max_input_time 200

8. 壓縮文件

你可以通過(guò)壓縮文件來(lái)減少網(wǎng)絡(luò)流量,也頁(yè)面裝載時(shí)間:

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/JavaScript

AddOutputFilterByType DEFLATE application/x-javascript

9. 緩存文件

這一點(diǎn)還需要解釋嗎?

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>

Header set Cache-Control “max-age=2592000〃

</FilesMatch>

10. 添加尾部的反斜杠

我并不確定,但是很多文章,很多人都說(shuō)添加尾部反斜杠有益于SEO:

<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} /+[^\.]+$

RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

</IfModule>

====================

引用:http://www./658/html/xxlm/itxxl/882.html

.htaccess基本語(yǔ)法和應(yīng)用

.htaccess是Apache服務(wù)器的一個(gè)非常強(qiáng)大的分布式配置文件。

正確的理解和使用.htaccess文件,可以幫助我們優(yōu)化自己的服務(wù)器或者虛擬主機(jī)。

如何啟用htaccess

以windows為例,進(jìn)入apache/conf目錄,找到httpd.conf文件,去掉

LoadModule rewrite_module modules/mod_rewrite.so

前面的#,然后設(shè)置目錄屬性AllowOverride All,重啟apache即可

下面是一個(gè)典型的htaccess文件

           # 開(kāi)啟URL重寫(xiě)
RewriteEngine on
# URL重寫(xiě)的作用域
# RewriteBase /path/to/url
# 滿足怎樣的條件
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
# 應(yīng)用怎樣的規(guī)則
RewriteRule .? http://www.%{REQUEST_URI} [R=301,L]

來(lái)看看RewriteCond,首先有一個(gè)%,因?yàn)閧HTTP_HOST}是一個(gè)apache變量,需要用%來(lái)指示。從!開(kāi)始就是匹配的條件,支持 正則。!表示不等于,這句話的意思就是:如果HTTP_HOST不是www.。后面的[NC](no case)表示忽略大小寫(xiě),常見(jiàn)的還有

  • [L](last):終止一系列的RewriteCond和RewriteRule
  • [R](redirect):觸發(fā)一個(gè)顯示的跳轉(zhuǎn),也可以指定跳轉(zhuǎn)類(lèi)型,如[R=301]
  • [F](forbidden):禁止查看特定文件,apache會(huì)觸發(fā)403錯(cuò)誤

圖片防盜鏈

           RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]

由于是基于HTTP_REFERER的驗(yàn)證,所以只能防止一般的圖片盜鏈,因?yàn)镠TTP_REFERER是比較容易偽造的

自定義404錯(cuò)誤頁(yè)面

如果用戶輸入了一個(gè)不存在的url,那么就顯示自定義的錯(cuò)誤頁(yè)面

           ErrorDocument 404 /404.html
# 其他同理
ErrorDocument 500 /500.html

處理移動(dòng)過(guò)的文件

           Redirect 301 /old.html http:///new.html
# 也可以是下面這樣
RewriteRule /old.html http:///new.html [R=301,L]
# 如果想隱式跳轉(zhuǎn)(URL地址不變,但實(shí)際上內(nèi)容是其他URL的),就使用下面的
RewriteRule /old.html http:///new.html [L]

對(duì)于RewriteRule還有好多文章可以做,比如

           # 把html后綴的url鏈接到php文件
# $1指代的是前面第1個(gè)用括號(hào)括起來(lái)的內(nèi)容
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
# 或者把舊文件夾的內(nèi)容鏈接到新文件夾
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
# 隱藏文件名
RewriteRule ^/?([a-z]+)$ $1.php [L]
禁止顯示目錄列表

如果目錄里沒(méi)有index文件,又沒(méi)有對(duì)該目錄做過(guò)特別的處理,尤其是windows主機(jī),那么該目錄里的內(nèi)容就會(huì)顯示出來(lái),這時(shí)可以在根目錄創(chuàng)建 一個(gè).htaccess文件,然后寫(xiě)上

           Options -Indexes
# 就這么一句就搞定了

阻止/允許特定IP/IP段

           # 禁止所有IP,除了指定的
order deny,allow
deny from all
# 如果想允許IP段,如123.123.123.0 ~ 123.123.123.255,則
# allow from 123.123.123.
allow from 123.123.123.123

ErrorDocument 403 /page.html

<Files page.html>
allow from all
</Files>

#如果想禁止特定IP
deny from 123.123.123.123

添加MIME類(lèi)型

           AddType video/x-flv .flv
# 如果設(shè)置類(lèi)型為 application/octet-stream 將提示下載
AddType application/octet-stream .pdf

用.htaccess文件實(shí)現(xiàn)網(wǎng)站404錯(cuò)誤

 

來(lái)源網(wǎng)址: http://www./archives/618

作者:admin  發(fā)表于:2012年06月11日 09:25  分類(lèi):SEO技術(shù)     字體: 小 中 

定義404錯(cuò)誤 頁(yè)對(duì)網(wǎng)站SEO的作用還是很大的,404 錯(cuò)誤意味著鏈接指向的網(wǎng)頁(yè)不存在,即原始網(wǎng)頁(yè)的URL失效,這種情況經(jīng)常會(huì)發(fā)生,很難避免,當(dāng)Web 服務(wù)器接到類(lèi)似請(qǐng)求時(shí),會(huì)返回一個(gè)404 狀態(tài)碼,告訴瀏覽器要請(qǐng)求的資源并不存在。但是,Web服務(wù)器默認(rèn)的404錯(cuò)誤頁(yè)面,十分呆板,而且對(duì)SEO是不利,對(duì)于網(wǎng)站流量也是很大的損失。

現(xiàn)在大多數(shù)主機(jī)都提供設(shè)置404頁(yè)面的接口,這樣的無(wú)論是國(guó)內(nèi)主機(jī)還是國(guó)外主機(jī)都很好設(shè)置,不過(guò)仍然有不少主機(jī)不提供設(shè)置頁(yè)面,這樣的多是國(guó)內(nèi)主機(jī)和一些免費(fèi)主機(jī),本文主要是針對(duì)這些主機(jī),而且是針對(duì)PHP主機(jī)。

1. Apache下設(shè)置404錯(cuò)誤頁(yè)面(一般是Linux主機(jī))

(1)           在.htaccess 文件(如果沒(méi)有則新建一個(gè))中加入如下內(nèi)容:ErrorDocument 404 /404.html,將.htaccess文件上傳到網(wǎng)站根目錄

注:也可以使用這樣的命令

ErrorDocument 404 http://www./404.htm

ErrorDocument 500 http://www./500.htm

(2)           制作一個(gè)404頁(yè)面,隨便您設(shè)計(jì),命名為404.html,同樣上傳到網(wǎng)站根目錄。如果您還想設(shè)置500頁(yè)面,還可以在.htaccess命令里加上ErrorDocument 404 /500.html 并制作一個(gè)500頁(yè)面?zhèn)鞯骄W(wǎng)站根目錄

網(wǎng)友不必檢驗(yàn)本站的404頁(yè)面了,因?yàn)楸菊居玫氖莋odaddy免費(fèi)的空間,404頁(yè)面會(huì)有廣告。

本文由新未來(lái)博客(www.)整理,轉(zhuǎn)載請(qǐng)注明!

本文固定鏈接: http://www./archives/618 | WordPress主機(jī)|香港主機(jī)空間|香港高速主機(jī)|新未來(lái)博客

由淺入深剖析.htaccess

 

來(lái)源網(wǎng)址: http://blog.csdn.net/cdefg198/article/details/6645759

2011-07-29 23:36 210人閱讀 評(píng)論(0) 收藏 舉報(bào)

1、.htaccess文件使用前提

.htaccess的主要作用就是實(shí)現(xiàn)url改寫(xiě),也就是當(dāng)瀏覽器通過(guò)url訪問(wèn)到服務(wù)器某個(gè)文件夾時(shí),作為主人,我們可以來(lái)接待這個(gè)url,具體地怎樣接待它,就是此文件的作用。所有的訪問(wèn)都是通過(guò)URL實(shí)現(xiàn),所以.htaccess的作用非同小可。正因?yàn)榇?,所以一般地網(wǎng)站通過(guò)設(shè)置.htaccess,通過(guò)一個(gè)十分友好的url吸引用戶進(jìn)來(lái),然后用.htaccess把用戶帶到需要訪問(wèn)的位置。

要想使用這個(gè)強(qiáng)大功能,就得開(kāi)啟apache里面的重寫(xiě)模塊。

前面的文章中曾經(jīng)講到過(guò)windows和ubuntu開(kāi)啟 rewrite模塊使用.htaccess 。

其實(shí)開(kāi)啟模塊大體的步驟都是一樣的,無(wú)論是Windows和linux。

2、.htaccess基本語(yǔ)法介紹

開(kāi)啟重寫(xiě)引擎 :RewriteEngine on

設(shè)置重寫(xiě)的根目錄:RewriteBase /     — 說(shuō)明 :因?yàn)槎x了這個(gè)文件夾,所以對(duì)應(yīng)的替換就有了一個(gè)參照。

匹配所有符合條件的請(qǐng)求:RewriteCond       — 說(shuō)明:RewriteCond 定義了一系列規(guī)則條件,這個(gè)指令可以有一條或者多條,只有用戶拿來(lái)的url符合這些條件之后,我們的.htaccess才開(kāi)始接待,否則用戶就直接自己去訪問(wèn)所需要的目錄了。

舉個(gè)例子,為了能讓搜索引擎更多地抓取我們的網(wǎng)頁(yè)而避免重復(fù)抓,我們通常把沒(méi)有www的域名重定向到www.XXX.com,如下就實(shí)現(xiàn)了這個(gè)功能:

RewriteEngine On

RewriteCond %{HTTP_HOST}  ^nbphp\.com$ [NC]

RewriteRule ^(.*)$  http://www./$1 [R=301,L]

上例便把 重定向到www.

%{HTTP_HOST} 是指取得用戶訪問(wèn)的URL的主域名  然后空格后面是一個(gè)正則表達(dá)式匹配,意識(shí)就是說(shuō)是否是 。

如果用戶訪問(wèn)使用的URL滿足所有列出的RewriteCond 提出的條件,那么進(jìn)行下一步RewriteRule 即開(kāi)始進(jìn)行引導(dǎo),這才開(kāi)始實(shí)現(xiàn).htaccess文件的重要功能。

同樣,前面是正則表達(dá)式,用戶分析用戶的除了主域名之外的URL ,^(.*)$的意思就是所有的內(nèi)容。 然后空格后面寫(xiě)的是我們引導(dǎo)用戶訪問(wèn)的目錄,我們帶著他走到新的一個(gè)域名上。$1 指的是前面括號(hào)里匹配url所得到的內(nèi)容。

這樣就是一個(gè)完整的小例子。關(guān)于RewriteCond里 如何調(diào)用url的某個(gè)部分,我們可以參考這篇文章(Apache的Mod_rewrite學(xué)習(xí) (RewriteCond重寫(xiě)規(guī)則的條件);

3、現(xiàn)學(xué)現(xiàn)用,學(xué)習(xí)正則表達(dá)式。

推薦一個(gè)經(jīng)典的教程: 正則表達(dá)式30分鐘入門(mén)教程

這個(gè)教程的確很簡(jiǎn)單,看完基本上寫(xiě)一些簡(jiǎn)單的正則就沒(méi)有問(wèn)題了。正則是一個(gè)需要長(zhǎng)期使用的工具,隔段時(shí)間不用會(huì)忘記,所以我每次都看一遍這個(gè)教程。其實(shí)學(xué)過(guò)之后重要的就是一點(diǎn)內(nèi)容。我簡(jiǎn)單羅列了如下:

.  換行符以外的所有字符

\w匹配字母或數(shù)字或下劃線或漢字

\s匹配任意的空白符

\d匹配數(shù)字

\b匹配單詞的開(kāi)始或結(jié)束

^匹配字符串的開(kāi)始

$匹配字符串的結(jié)束

*重復(fù)零次或更多次

*重復(fù)零次或更多次

+重復(fù)一次或更多次

?重復(fù)零次或一次

{n}重復(fù)n次

{n,}重復(fù)n次或更多次

{n,m}重復(fù)n到m次

應(yīng)用替換時(shí),前面第一個(gè)()中匹配的內(nèi)容后面就用$1引用,第二個(gè)()中匹配的就用$2應(yīng)用……

推薦一個(gè)實(shí)用的正則在線測(cè)試網(wǎng)站 http://www./

我們來(lái)分析一下 discuz7.0 搜索引擎優(yōu)化 htaccess 里面的重寫(xiě)。

RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$  forumdisplay.php?fid=$1&page=$2

首先加入用戶通過(guò) /forum-2-3.html 訪問(wèn)discuz論壇,那么先通過(guò).htaccess過(guò)濾,看看是否需要.htaccess引導(dǎo)一下用戶,如果滿足列出的一系列RewriteCond的條件那么就進(jìn)行重寫(xiě),discuz的沒(méi)有列出RewriteCond 所以應(yīng)該全部都進(jìn)行重寫(xiě)。所以開(kāi)始進(jìn)行轉(zhuǎn)寫(xiě),forum-2-3.html 這個(gè)正好符合 列出的^forum-([0-9]+)-([0-9]+)\.html$ 正則表達(dá)式。并且 $1 為 2  ,$2為3 ,所以代入后面,即 forumdisplay.php?fid=2&page=3 加上前面的RewriteBase 指定的文件目錄,那么就帶他到制定目錄的forumdisplay.php?fid=2&page=3 。

4、常見(jiàn)的.htaccess應(yīng)用舉例(部分例子引自四個(gè)例子實(shí)戰(zhàn)講解.htaccess文件rewrite規(guī)則)
4.1防止盜鏈,如果來(lái)得要訪問(wèn)jpe jpg bmp png結(jié)尾的url 用戶不是來(lái)自我們的網(wǎng)站,那么讓他看一張我們網(wǎng)站的展示圖片。

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

4.2 網(wǎng)站升級(jí)的時(shí)候,只有特定IP才能訪問(wèn),其他的用戶將看到一個(gè)升級(jí)頁(yè)面

RewriteEngine on

RewriteCond %{REQUEST_URI} !/upgrade.html$

RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30

RewriteRule $ http://www./upgrade.html [R=302,L]

4.3把老的域名轉(zhuǎn)向新域名

# redirect from old domain to new domain

RewriteEngine On

RewriteRule ^(.*)$http://www./$1[R=301,L]

5、一些其他功能
5.1 引出錯(cuò)誤文檔的目錄

ErrorDocument 400 /errors/badrequest.html

ErrorDocument 404   http://yoursite/errors/notfound.html

ErrorDocument 401 “Authorization Required

5.2 Blocking users by IP 根據(jù)IP阻止用戶訪問(wèn)

order allow,deny

deny from 123.45.6.7

deny from 12.34.5. (整個(gè)C類(lèi)地址)

allow from all

5.3 防止目錄瀏覽

# disable directory browsing

Options All -Indexes

5.4設(shè)置默認(rèn)首頁(yè)

# serve alternate default index page

DirectoryIndex about.html

5.5 把一些老的鏈接轉(zhuǎn)到新的鏈接上——搜索引擎優(yōu)化SEO

Redirect 301 /d/file.htmlhttp://www./r/file.html

5.6為服務(wù)器管理員設(shè)置電子郵件。

ServerSignature EMail

SetEnv SERVER_ADMINdefault@domain.com


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多