PHP網(wǎng)站建設(shè)最常用的服務(wù)器是Apache,網(wǎng)站使用偽靜態(tài)可利于維護優(yōu)化,在Apache服務(wù)器使用偽靜態(tài)就必須用到htaccess,而htaccess使用的是正則表達(dá)式規(guī)則和一些特殊語法,不管你是一個網(wǎng)站開發(fā)者、維護優(yōu)化師還是一個網(wǎng)站管理員,理解htaccess規(guī)則對你都是非常必要的。以下方維網(wǎng)站建設(shè)(m.oulysa.com)為你一一講解。
下圖是一個網(wǎng)站的htaccess規(guī)則
第一句RewriteEngine on 表示開啟偽靜態(tài)
RewriteCond 表示應(yīng)用的規(guī)則前提 可以是 %{HTTP_USER_AGENT} 表示訪問瀏覽器;%{HTTP_HOST} 表示訪問主機域名 %{HTTP_REFERER} 來源 %{HTTP_COOKIE} cookie
RewriteRule 表示應(yīng)用的具體規(guī)則跳轉(zhuǎn),主要是正則表達(dá)式
中括號中的L 表示規(guī)則執(zhí)行到此為止,不再執(zhí)行后面的規(guī)則
R=301 表示301跳轉(zhuǎn)(301跳轉(zhuǎn)在維護優(yōu)化中是非常重要而且經(jīng)常使用到的,尤其是網(wǎng)站改版中URL變化中使用)
QSA表示強制重寫引擎在已有的替換串中追加一個請求串,而不是簡單的替換。 如果需要通過重寫規(guī)則在請求串中增加信息,就可以使用這個標(biāo)記。
PT表示強制重寫引擎將內(nèi)部結(jié)構(gòu)request_rec中的uri字段設(shè)置為 filename字段的值,主要用于混合使用mod_alias和mod_rewrite
NC 表示忽略大小寫
RewriteCond %{REQUEST_FILENAME} !-f //如果文件存在,就直接訪問文件
RewriteCond %{REQUEST_FILENAME} !-d //#如果目錄存在就直接訪問目錄
RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#如果是這些后綴的文件,就直接訪問文件
以上三個規(guī)則都不再使用下面的偽靜態(tài)規(guī)則。
RewriteCond %{HTTP_HOST} ^szfangwei.cn/?$ [NC]
RewriteRule ^(.*)$ http://m.oulysa.com/$1 [L,R=301]
這個是維護中為了避免域名szfangwei.cn和m.oulysa.com分散權(quán)重,統(tǒng)一跳轉(zhuǎn)到m.oulysa.com中
RewriteRule ^index.asp$ / [L,R=301]
RewriteRule ^index.php$ / [L,R=301]
這兩句也是為了避免分散權(quán)重,讓index.asp和index.php都301跳轉(zhuǎn)到主目錄。
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
這句是用于Thinkphp偽靜態(tài)跳轉(zhuǎn)
當(dāng)網(wǎng)站在維護或者升級測試的時候,可通過偽靜態(tài)設(shè)置當(dāng)自己訪問時訪問網(wǎng)站,其他IP訪問則跳轉(zhuǎn)到提示頁面
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^122.22.11.11
RewriteRule $ /error.html [R=302,L]