<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            apache服務器偽靜態教程

            時間:2025-05-13 22:34:33 php語言 我要投稿
            • 相關推薦

            apache服務器偽靜態教程

              導語:雖然網上有很多教程,不過發現大部分都是抄襲一個人的,一點都不全,所以小編寫了一個簡單的易于理解的教程,歡迎參考!

              我學習.htaccess是從目錄保護開始的,這個也比較簡單,網上也有一些編輯器可以選擇,這兒就不說了,教程從綁定域名到子目錄開始,網上也有教程,大部分都是抄襲一個人的,我在這兒解說一下,教程寫法是這樣的:

              RewriteEngineOn

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

              RewriteCond%{REQUEST_URI}!^/blog/

              RewriteCond%{REQUEST_FILENAME}!-f

              RewriteCond%{REQUEST_FILENAME}!-d

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

              #沒有輸入文件名的默認到到首頁

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

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

              下面我開始解說一下上面的意思:

              【RewriteEngineOn】表示重寫引擎開,關閉off,作用就是方便的開啟或關閉以下的語句,這樣就不需要一條一條的注釋語句了。

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

              這是重寫條件,前面%{HTTP_HOST}表示當前訪問的網址,只是指前綴部分,格式是www.xxx.com不包括“http://”和“/”,^表示字符串開始,$表示字符串結尾,.表示轉義的.,如果不轉義也行,推薦轉義,防止有些服務器不支持,?表示前面括號www.出現0次或1次,這句規則的意思就是如果訪問的網址是xxx.com或者www.xxx.com就執行以下的語句,不符合就跳過。

              【RewriteCond%{REQUEST_URI}!^/blog/】

              也是重寫條件,%{REQUEST_URI}表示訪問的相對地址,就是相對根目錄的地址,就是域名/后面的成分,格式上包括最前面的“/”,!表示非,這句語句表示訪問的地址不以/blog/開頭,只是開頭^,沒有結尾$

              【RewriteCond%{REQUEST_FILENAME}!-f】

              【RewriteCond%{REQUEST_FILENAME}!-d】

              這兩句語句的意思是請求的文件或路徑是不存在的,如果文件或路徑存在將返回已經存在的文件或路徑

              【RewriteRule^(.*)$/blog/$1】重寫規則,最重要的部分,意思是當上面的RewriteCond條件都滿足的時候,將會執行此重寫規則,^(.*)$是一個正則表達的匹配,匹配的是當前請求的URL,^(.*)$意思是匹配當前URL任意字符,.表示任意單個字符,*表示匹配0次或N次(N>0),后面/blog/$1是重寫成分,意思是將前面匹配的字符重寫成/blog/$1,這個$1表示反向匹配,引用的是前面第一個圓括號的成分,即^(.*)$中的.*,其實這兒將會出現一個問題,后面討論。

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

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

              這兩句的意思是指請求的host地址是www.xxx.com是,如果地址的結尾只有0個或者1個“/”時,將會重寫到子目錄下的主頁,我猜想這主要因為重寫后的地址是不能自動尋找主頁的,需要自己指定。

              現在說說出現的問題,RewriteRule^(.*)$/blog/$1前部分^(.*)$將會匹配當前請求的url,例如:請求網址是http://www.xxx.com/a.html,到底是匹配整個http://www.xxx.com/a.html,還是只匹配/a.html即反斜杠后面的成分,還是只匹配a.html。

              答案是:根據RewriteBase規則規定,如果rewritebase為/,將會匹配a.html,不帶前面的反斜杠,所以上條語句應該寫成RewriteRule^(.*)$blog/$1(不帶/),不過實際應用上帶上前面的反斜杠,也可以用,可能帶不帶都行。現在問題出來了,如果不設置rewritebase為/,將會匹配整個網址http://www.xxx.com/a.html,顯然這是錯誤的,所以應該添加這條:

              RewiteBase/

              還有一個問題是,不能保證每個人輸入的網址都是小寫的,如果輸入大寫的呢,linux系統是區分大小寫的,所以應該在RewriteCond后添加[NC]忽略大小寫的。

              至此,完整的語句應該是:

              ####start####

              RewriteEngineOn

              RewiteBase/

              RewriteCond%{HTTP_HOST}^(www.)?xxx.com$[NC]

              RewriteCond%{REQUEST_URI}!^/blog/

              RewriteCond%{REQUEST_FILENAME}!-f

              RewriteCond%{REQUEST_FILENAME}!-d

              RewriteRule^(.*)$blog/$1

              #沒有輸入文件名的默認到到首頁

              RewriteCond%{HTTP_HOST}^(www.)?xxx.com$[NC]

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


            【apache服務器偽靜態教程】相關文章:

            php的apache偽靜態09-28

            PHP偽靜態的方法10-26

            php簡單偽靜態實例09-16

            PHP偽靜態的幾種方法06-01

            php實現偽靜態的方法實例09-25

            PHP簡單的偽靜態URL機制實現09-02

            Java UrlRewriter偽靜態技術運用分析10-28

            php生成靜態頁面的詳細教程10-15

            Linux新手入門WEB服務器教程08-31

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看