.htaccess 文法參數說明_PHP教程

來源:互聯網
上載者:User
接觸過 .htaccess 檔案的朋友們是否對立面的一些文法不是很懂,經常會看到一條規則後面跟些大寫的 L NC R QSA 什麼的,知道他們什麼意思嗎?OK,下面這篇文章就是簡單的對 .htaccess 檔案的相關文法參數進行一下簡單的說明。

chain|C(連結下一規則)

此標記使當前規則與下一個規則相連結。它產生這樣的效果:如果一個規則被匹配,則繼續處理其後繼規則,也就是這個標記不起作用;如果該規則不被匹配,則其後繼規則將被跳過。比如,在一個目錄級規則中執行一個外部重新導向時,你可能需要刪除”.www”(此處不應該出現”.www”)。

cookie|CO=NAME:VAL:domain[:lifetime[:path]](設定cookie)

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

env|E=VAR:VAL(設定環境變數)

此標記將環境變數VAR的值為VAL,VAL可以包含可擴充的Regex反向引用($N和%N)。此標記可以多次使用以設定多個變數。這些變數可以在其後許多情況下被間接引用,通常是在XSSI()或CGI($ENV{VAR})中,也可以在後繼的RewriteCond指令的CondPattern參數中通過%{ENV:VAR}引用。使用它可以記住從URL中剝離的資訊。

forbidden|F(強制禁止URL)

強制禁止當前URL,也就是立即反饋一個HTTP響應碼403(被禁止的)。使用這個標記,可以連結若干個RewriteConds來有條件地阻塞某些URL。

gone|G(強制廢棄URL)

強制當前URL為已廢棄,也就是立即反饋一個HTTP響應碼410(已廢棄的)。使用這個標記,可以標明頁面已經被廢棄而不存在了。

handler|H=Content-handler(強制指定內容處理器)

強自製定目標檔案的內容處理器為Content-handler。例如,用來類比mod_alias模組的ScriptAlias指令,以強制對應檔夾內的所有檔案都由”cgi-script”處理器處理。

last|L(結尾規則)

立即停止重寫操作,並不再應用其他重寫規則。它對應於Perl中的last命令或C語言中的break命令。這個標記用於阻止當前已被重寫的URL被後繼規則再次重寫。例如,使用它可以重寫根路徑的URL(/)為實際存在的URL(比如:/e/www/)。

next|N(從頭再來)

重新執行重寫操作(從第一個規則重新開始)。此時再次進行處理的URL已經不是原始的URL了,而是經最後一個重寫規則處理過的URL。它對應於Perl中的next命令或C語言中的continue命令。此標記可以重新開始重寫操作(立即回到迴圈的開頭)。但是要小心,不要製造死迴圈!

nocase|NC(忽略大小寫)

它使Pattern忽略大小寫,也就是在Pattern與當前URL匹配時,A-Z和a-z沒有區別。

noescape|NE(在輸出中不對URI進行轉義)

此標記阻止mod_rewrite對重寫結果應用常規的URI轉義規則。 一般情況下,特殊字元(%, $, ;等)會被轉義為等值的十六進位編碼(%25′, %24′, %3B等)。此標記可以阻止這樣的轉義,以允許百分比符號等符號出現在輸出中,比如:

RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 可以使/foo/zed轉向到一個安全的請求/bar?arg=P1=zed

nosubreq|NS(不對內部子請求進行處理)

在當前請求是一個內部子請求時,此標記強制重寫引擎跳過該重寫規則。比如,在mod_include試圖搜尋目錄預設檔案(index.xxx)時,Apache會在內部產生子請求。對於子請求,重寫規則不一定有用,而且如果整個規則集都起作用,它甚至可能會引發錯誤。所以,可以用這個標記來排除某些規則。使用原則:如果你為URL添加了CGI指令碼首碼,以強制它們由CGI指令碼處理,但對子請求處理的出錯率(或者資源開銷)很高,在這種情況下,可以使用這個標記。

proxy|P(強製為代理)

此標記使替換成分被內部地強製作為代理請求發送,並立即中斷重寫處理,然後把處理移交給mod_proxy模組。你必須確保此替換串是一個能夠被mod_proxy處理的有效URI(比如以http://www.phpernote.com開頭),否則將得到一個代理模組返回的錯誤。使用這個標記,可以把某些遠程成分映射到本機伺服器網域名稱空間,從而增強了ProxyPass指令的功能。注意:要使用這個功能,必須已經啟用了mod_proxy模組。

passthrough|PT(移交給下一個處理器)

此標記強制重寫引擎將內部request_rec結構中的uri欄位設定為filename欄位的值,這個小小的修改使得RewriteRule指令的輸出能夠被(從URI轉換到檔案名稱的)Alias, ScriptAlias, Redirect等指令進行後續處理[原文: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.]。

舉一個能說明其含義的例子: 如果要將/abc重寫為/def, 然後再使用mod_alias將/def轉換為/ghi,可以這樣:

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

如果省略了PT標記,雖然將uri=/abc/…重寫為filename=/def/…的部分運作正常,但是後續的mod_alias在試圖將URI轉換到檔案名稱時會遭遇失效。注意:如果需要混合使用多個將URI轉換到檔案名稱的模組時,就必須使用這個標記。。此處混合使用mod_alias和mod_rewrite就是個典型的例子。

qsappend|QSA(新增查詢字串)

此標記強制重寫引擎在已有的替換字串中追加一個查詢字串,而不是簡單的替換。如果需要通過重寫規則在請求串中增加資訊,就可以使用這個標記。

redirect|R [=code](強制重新導向)

若Substitution以http://thishost[:thisport]/(使新的URL成為一個URI)開頭,可以強制性執行一個外部重新導向。如果沒有指定code,則產生一個HTTP響應碼302(臨時性移動)。如果需要使用在300-400範圍內的其他響應代碼,只需在此指定即可(或使用下列符號名稱之一:temp(預設), permanent, seeother)。使用它可以把正常化的URL反饋給用戶端,如將”/~”重寫為”/u/”,或始終對/u/user加上斜杠,等等。

注意:在使用這個標記時,必須確保該替換欄位是一個有效URL。否則,它會指向一個無效的位置!並且要記住,此標記本身只是對URL加上http://thishost[:thisport]/首碼,重寫操作仍然會繼續進行。通常,你還會希望停止重寫操作而立即重新導向,那麼就還需要使用L標記。

skip|S=num(跳過後繼規則)

此標記強制重寫引擎跳過當前匹配規則之後的num個規則。它可以類比if-then-else結構:最後一個規則是then從句,而被跳過的skip=N個規則是else從句。注意:它和chain|C標記是不同的!

type|T=MIME-type(強制MIME類型)

強制目標檔案的MIME類型為MIME-type,可以用來基於某些特定條件強制設定內容類型。比如,下面的指令可以讓.php檔案在以.phps副檔名調用的情況下由mod_php按照PHP原始碼的MIME類型(application/x-httpd-php-source)顯示:

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

您可能感興趣的文章

  • phpMyAdmin Cannot start session without errors錯誤解決辦法
  • .htaccess如何設定防盜鏈某個目錄的圖片
  • php中$this、static、final、const、self 等幾個關鍵字的用法
  • 利用.htaccess禁止列表目錄
  • Fatal error Class 'SoapClient' not found in ...錯誤處理辦法
  • php提示Maximum execution time of 30 seconds exceeded...錯誤的解決辦法
  • 10 段實用的 .htaccess 程式碼片段
  • 利用.htaccess拒絕某ip訪問網站

http://www.bkjia.com/PHPjc/764191.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764191.htmlTechArticle接觸過 .htaccess 檔案的朋友們是否對立面的一些文法不是很懂,經常會看到一條規則後面跟些大寫的 L NC R QSA 什麼的,知道他們什麼意思嗎...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.