<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、重寫語法 RewriteRule Syntax: RewriteRule Pattern Substitution [flags] 一條RewriteRule指令,定義一條重寫規則,規則間的順序非常重要。對Apache1.2及以后的版本,模板(pattern)是一個 POSIX正則式,用以匹配當前的URL。當前的URL不一定是用記最初提交的URL,因為可能用一些規則在此規則前已經對URL進行了處理。 Apache的Mod_rewrite學習(RewriteRule重寫規則的語法) - dawnsword - 理想與現實對mod_rewrite來說,!是個合法的模板前綴,表示“非”的意思,這對描述“不滿足某種匹配條件”的情況非常方便,或用作最后一條默認規則。當使用!時,不能在模板中有分組的通配符,也不能做后向引用。 當匹配成功后,Substitution會被用來替換相應的匹配,它除了可以是普通的字符串以外,還可以包括: 1. $N,引用RewriteRule模板中匹配的相關字串,N表示序號,N=0..9 2. %N,引用最后一個RewriteCond模板中匹配的數據,N表示序號 3. %{VARNAME},服務器變量 4. ${mapname:key|default},映射函數調用 這些特殊內容的擴展,按上述順序進行。 一個URL的全部相關部分都會被Substitution替換,而且這個替換過程會一直持續到所有的規則都被執行完,除非明確地用L標志中斷處理過程。 當susbstitution有”-”前綴時,表示不進行替換,只做匹配檢查。 利用RewriteRule,可定義含有請求串(Query String)的URL,此時只需在Sustitution中加入一個?,表示此后的內容放入QUERY_STRING變量中。如果要清空一個 QUERY_STRING變量,只需要以?結束Substitution串即可。 如果給一個Substitution增加一個http://thishost[:port]的前綴,則mod_rewrite會自動將此前綴去掉。因此,利用http://thisthost做一個無條件的重定向到自己,將難以奏效。要實現這種效果,必須使用R標志。 Flags是可選參數,當有多個標志同時出現時,彼此間以逗號分隔。 1. **'redirect|R [=code]' (強制重定向)** 給當前的URI增加前綴http://thishost[:thisport]/, 從而生成一個新的URL,強制生成一個外部重定向(external redirection,指生的URL發送到客戶端,由客戶端再次以新的URL發出請求,雖然新URL仍指向當前的服務器). 如果沒有指定的code值,則HTTP應答以狀態值302 (MOVED TEMPORARILY),如果想使用300-400(不含400)間的其它值可以通過在code的位置以相應的數字指定,也可以用標志名指定: temp (默認值), permanent, seeother. 注意,當使用這個標志時,要確實substitution是個合法的URL,這個標志只是在URL前增加http://thishost[:thisport]/前綴而已,重寫操作會繼續進行。如果要立即將新URL重定向,用L標志來中重寫流程。 2. **'forbidden|F' (強制禁止訪問URL所指的資源)** 立即返回狀態值403 (FORBIDDEN)的應答包。將這個標志與合適的RewriteConds 聯合使用,可以阻斷訪問某些URL。 3. **'gone|G' (強制返回URL所指資源為不存在(gone))** 立即返回狀態值410 (GONE)的應答包。用這個標志來標記URL所指的資源永久消失了. 4. **'proxy|P' (強制將當前URL送往代理模塊(proxy module))** 這個標志,強制將substitution當作一個發向代理模塊的請求,并立即將共送往代理模塊。因此,必須確保substitution串是一個合法的URI (如, 典型的情況是以http://hostname開頭),否則會從代理模塊得到一個錯誤. 這個標志,是ProxyPass指令的一個更強勁的實現,將遠程請求(remote stuff)映射到本地服務器的名字空間(namespace)中來。 注意,使用這個功能必須確保代理模塊已經編譯到Apache 服務器程序中了. 可以用“httpd -l ”命令,來檢查輸出中是否含有mod_proxy.c來確認一下。如果沒有,而又需要使用這個功能,則需要重新編譯"httpd"程序并使用 mod_proxy有效。 5. **'last|L' (最后一條規則)** 中止重寫流程,不再對當前URL施加更多的重寫規則。這相當于perl的last命令或C的break命令。 6. **'next|N' (下一輪)** 重新從第一條重寫規則開始執行重寫過程,新開的過程中的URL不應當與最初的URL相同。 這相當于Perl的next命令或C的continue命令. 千萬小心不要產生死循環。 7. **'chain|C' (將當前的規則與其后續規則綑綁(chained))** 當規則匹配時,處理過程與沒有綑綁一樣;如果規則不匹配,則綑綁在一起的后續規則也不在檢查和執行。 8. **'type|T=MIME-type' (強制MIME類型)** 強制將目標文件的MIME-type為某MIME類型。例如,這可用來模仿mod_alias模塊對某目錄的ScriptAlias指定,通過強制將該目錄下的所有文件的類型改為 “application/x-httpd-cgi”. 9. **'nosubreq|NS' (used only if no internal sub-request )** 這個標志強制重寫引擎跳過為內部sub-request的重寫規則.例如,當mod_include試圖找到某一目錄下的默認文件時 (index.xxx),sub-requests 會在Apache內部發生. Sub-requests并非總是有用的,在某些情況下如果整個規則集施加到它上面,會產生錯誤。利用這個標志可排除執行一些規則。 10. **'nocase|NC' (模板不區分大小寫)** 這個標志會使得模板匹配當前URL時忽略大小寫的差別。 11. **'qsappend|QSA' (追加請求串(query string))** 這個標志,強制重寫引擎為Substitution的請求串追加一部分串,則不是替換掉原來的。借助這個標志,可以使用一個重寫規則給請求串增加更多的數據。 12. **'noescape|NE' (不對輸出結果中的特殊字符進行轉義處理)** 通常情況下,mod_write的輸出結果中,特殊字符(如'%', '$', ';', 等)會轉義為它們的16進制形式(如分別為'%25', '%24', and '%3B')。這個標志會禁止mod_rewrite對輸出結果進行此類操作。 這個標志只能在 Apache 1.3.20及以后的版本中使用。 13. **'passthrough|PT' (通過下一個處理器)** 這個標志強制重寫引擎用 filename字段的值來替換內部request_rec數據結構中uri字段的值。. 使用這個標志,可以使后續的其它URI-to-filename轉換器的Alias、ScriptAlias、Redirect等指令,也能正常處理 RewriteRule指令的輸出結果。用一個小例子來說明它的語義:如果要用mod_rewrite的重寫引擎將/abc轉換為/def,然后用 mod_alas將/def重寫為ghi,則要: RewriteRule ^/abc(.*) /def$1 [PT] Alias /def /ghi 如 果PT標志被忽略,則mod_rewrite也能很好完成工作,如果., 將 uri=/abc/... 轉換為filename=/def/... ,完全符合一個URI-to-filename轉換器的動作。接下來 mod_alias 試圖做 URI-to-filename 轉換時就會出問題。 注意:如果要混合都含有URL-to-filename轉換器的不同的模塊的指令,必須用這個標志。最典型的例子是mod_alias和mod_rewrite的使用。 14. **'skip|S=num' (跳過后面的num個規則)** 當前規則匹配時,強制重寫引擎跳過后續的num個規則。用這個可以來模仿if-then-else結構:then子句的最后一條rule的標志是skip=N,而N是else子句的規則條數。 15. **'env|E=VAR:VAL' (設置環境變量)** 設置名為VAR的環境變量的值為VAL,其中VAL中可以含有正則式的后向引用($N或%N)。這個標志可以使用多次,以設置多個環境變量。這兒設置的 變量,可以在多種情況下被引用,如在XSSI或CGI中。另外,也可以在RewriteCond模板中以%{ENV:VAR}的形式被引用。 > 注意1:一定不要忘記,在服務器范圍內的配置文件中,模板(pattern)用以匹配整個URL;而在目錄范圍內的配置文件中,目錄前綴總是被自動去 掉后再進行模板匹配的,且在替換完成后自動再加上這個前綴。這個功能對很多種類的重寫是非常重要的,因為如果沒有去前綴,則要進行父目錄的匹配,而父目錄 的信息并不是總能得到的。一個例外是,當substitution中有http://打頭時,則不再自動增加前綴了,如果P標志出現,則會強制轉向代理。 > 注 意2:如果要在某個目錄范圍內啟動重寫引擎,則需要在相應的目錄配置文件中設置“RewriteEngine on”,且目錄的“Options FollowSymLinks”必須設置。如果管理員由于安全原因沒有打開FollowSymLinks,則不能使用重寫引擎。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看