欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

htaccess語法教程

 更新時(shí)間:2011年09月13日 22:25:51   作者:  
前些天不小心刪除了原來的博客系統(tǒng),問過godaddy的客服,恢復(fù)數(shù)據(jù)需要150美元,另外還需要提供不少信息,我于是放棄,注冊(cè)了這個(gè)nunumick.me,打算從頭再來。
雖然以前的文章沒有了,但我至少得保證原來到域名能夠繼續(xù)訪問到新的博客,瀏覽到新的文章,于是想起用htaccess來做重定向。這次對(duì)htaccess的寫法做個(gè)記錄,免得今后還要到處搜羅。

這是我這次用到的幾條重定向規(guī)則
復(fù)制代碼 代碼如下:

RewriteEngine on
#silentash全局切換
Rewritecond %{HTTP_HOST} ^(www\.)?silentash.com$ [nc]
Rewriterule ^(.*)$ http://jb51.net/$1 [r=301,nc]
#blog對(duì)應(yīng)切換
Rewritecond %{HTTP_HOST} ^blog.silentash.com$ [nc]
Rewriterule ^(.*)$ http://jb51.net/blog [r=301,nc]
#app對(duì)應(yīng)切換
Rewritecond %{HTTP_HOST} ^app.silentash.com$ [nc]
Rewriterule ^(.*)$ http://jb51.net/app/$1 [r=301,nc]
#lab對(duì)應(yīng)切換
Rewritecond %{HTTP_HOST} ^lab.silentash.com$ [nc]
Rewriterule ^(.*)$ http://jb51.net/lab/$1 [r=301,nc]
#photo對(duì)應(yīng)切換
Rewritecond %{HTTP_HOST} ^photo.silentash.com$ [nc]
Rewriterule ^(.*)$ http://jb51.net/photo/$1 [r=301,nc]
#只訪問主域的先切換到博客
Rewritecond %{HTTP_HOST} ^(www.)?jb51.net$ [nc]
Rewritecond %{REQUEST_URI} ^(\/)?$ [nc]
Rewriterule ^(.*)$ http://jb51.net/blog [r=301,nc]

下面簡單解說下上面的意思:

【RewriteEngine On】表示重寫引擎開,關(guān)閉off,關(guān)閉的話當(dāng)然就不能做轉(zhuǎn)發(fā)了。

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

【Rewriterule ^(.*)$ http://jb51.net/$1 [r=301,nc]】
這個(gè)根據(jù)之前的條件執(zhí)行相應(yīng)的規(guī)則,在這里的話就是讓重定向到j(luò)b51.net域下面相應(yīng)地址,比如來源地址是http://www.silentash.com/abc/1.html,前部分的^(.*)$將會(huì)匹配當(dāng)前請(qǐng)求的url,不過這里到底是匹配整個(gè)http://www.silentash.com/abc/1.html,還是只匹配/abc/1.html即反斜杠后面的成分,還是只匹配abc/1.html?

答案是:根據(jù)RewriteBase規(guī)則規(guī)定,如果rewritebase 為/,將會(huì)匹配abc/1.html,默認(rèn)應(yīng)該是abc/1.html。后面的$1是正則匹配出來的值,經(jīng)過組合,之前的url會(huì)被重定向?yàn)閔ttp://jb51.net/abc/1.html,達(dá)到了域名轉(zhuǎn)換的目的。

后面幾行大同小異。

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

下面附上簡單的語法規(guī)則和flags:
【RewriteCond語法:】
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)求存在的文件)
檢查TestString是否為一個(gè)有效的文件,而且可以在服務(wù)器當(dāng)前的訪問控制配置下被訪問。它使用一個(gè)內(nèi)部子請(qǐng)求來做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!
‘-U'(對(duì)子請(qǐng)求存在的URL)
檢查TestString是否為一個(gè)有效的URL,而且可以在服務(wù)器當(dāng)前的訪問控制配置下被訪問。它使用一個(gè)內(nèi)部子請(qǐng)求來做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!

【RewriteRule語法:】
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ī)則將被跳過。比如,在一個(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ù)中通過%{ENV:VAR}引用。使用它可以記住從URL中剝離的信息。

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

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

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

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

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

‘nocase|NC'(忽略大小寫)
它使Pattern忽略大小寫,也就是在Pattern與當(dāng)前URL匹配時(shí),'A-Z'和'a-z'沒有區(qū)別。

‘noescape|NE'(在輸出中不對(duì)URI進(jìn)行轉(zhuǎn)義)
此標(biāo)記阻止mod_rewrite對(duì)重寫結(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)制重寫引擎跳過該重寫規(guī)則。比如,在mod_include試圖搜索目錄默認(rèn)文件(index.xxx)時(shí),Apache會(huì)在內(nèi)部產(chǎn)生子請(qǐng)求。對(duì)于子請(qǐng)求,重寫規(guī)則不一定有用,而且如果整個(gè)規(guī)則集都起作用,它甚至可能會(huì)引發(fā)錯(cuò)誤。所以,可以用這個(gè)標(biāo)記來排除某些規(guī)則。
使用原則:如果你為URL添加了CGI腳本前綴,以強(qiáng)制它們由CGI腳本處理,但對(duì)子請(qǐng)求處理的出錯(cuò)率(或者資源開銷)很高,在這種情況下,可以使用這個(gè)標(biāo)記。

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

‘passthrough|PT'(移交給下一個(gè)處理器)
此標(biāo)記強(qiáng)制重寫引擎將內(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è)能說明其含義的例子: 如果要將/abc重寫為/def, 然后再使用mod_alias將/def轉(zhuǎn)換為/ghi,可以這樣:
RewriteRule ^/abc(.*) /def$1 [PT]
Alias /def /ghi
如果省略了PT標(biāo)記,雖然將uri=/abc/…重寫為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)制重寫引擎在已有的替換字符串中追加一個(gè)查詢字符串,而不是簡單的替換。如果需要通過重寫規(guī)則在請(qǐng)求串中增加信息,就可以使用這個(gè)標(biāo)記。

‘redirect|R [=code]‘(強(qiáng)制重定向)
若Substitution以http://thishost[:thisport]/(使新的URL成為一個(gè)URI)開頭,可以強(qiáng)制性執(zhí)行一個(gè)外部重定向。如果沒有指定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反饋給客戶端,如將”/~”重寫為”/u/”,或始終對(duì)/u/user加上斜杠,等等。
注意:在使用這個(gè)標(biāo)記時(shí),必須確保該替換字段是一個(gè)有效的URL。否則,它會(huì)指向一個(gè)無效的位置!并且要記住,此標(biāo)記本身只是對(duì)URL加上http://thishost[:thisport]/前綴,重寫操作仍然會(huì)繼續(xù)進(jìn)行。通常,你還會(huì)希望停止重寫操作而立即重定向,那么就還需要使用'L'標(biāo)記。

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

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

相關(guān)文章

  • vscode單擊新文件時(shí)覆蓋舊文件的解決方法

    vscode單擊新文件時(shí)覆蓋舊文件的解決方法

    本文是給大家分享的作者在使用vscoe過程中遇到的一個(gè)小問題的解決方法,就是取消vscode單擊新文件時(shí)覆蓋舊文件,希望對(duì)大家能夠有所幫助
    2020-02-02
  • 如何給 GitHub commit 加個(gè)綠色圖標(biāo)(教程詳解)

    如何給 GitHub commit 加個(gè)綠色圖標(biāo)(教程詳解)

    這篇文章主要介紹了如何給 GitHub commit 加個(gè)綠色圖標(biāo),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • postman擴(kuò)展程序包安裝與使用步驟

    postman擴(kuò)展程序包安裝與使用步驟

    這篇文章主要介紹了postman擴(kuò)展程序包安裝與使用步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 怎樣寫commit?log記錄及如何提交有哪些約定

    怎樣寫commit?log記錄及如何提交有哪些約定

    這篇文章主要為大家介紹了怎樣寫commit?log記錄以及及如何提交有哪些約定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳細(xì)講解計(jì)算機(jī)網(wǎng)絡(luò)——應(yīng)用層

    詳細(xì)講解計(jì)算機(jī)網(wǎng)絡(luò)——應(yīng)用層

    這不同類型的網(wǎng)絡(luò)應(yīng)用有不同的通信規(guī)則,因此應(yīng)用層協(xié)議是多種多樣的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等協(xié)議都是用于解決其各自的一類問題
    2021-08-08
  • google提供二維碼生成器

    google提供二維碼生成器

    這篇文章主要介紹了google提供二維碼生成器的在線地址,一般情況下大家可以根據(jù)自己的需要修改參數(shù)就可以了
    2014-04-04
  • 利用git提交代碼的方法步驟

    利用git提交代碼的方法步驟

    這篇文章主要介紹了利用git提交代碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Git分支合并沖突解決的方法實(shí)現(xiàn)

    Git分支合并沖突解決的方法實(shí)現(xiàn)

    這篇文章主要介紹了Git分支合并沖突解決的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Matlab操作HDF5文件示例

    Matlab操作HDF5文件示例

    這篇文章主要為大家介紹了Matlab操作HDF5文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 在VScode中創(chuàng)建你的代碼模板的方法

    在VScode中創(chuàng)建你的代碼模板的方法

    這篇文章主要介紹了在VScode中創(chuàng)建你的代碼模板的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論