东京热成人网站_XX另类XX伦理XXAV_亚洲精品无码成人AAA片_高清av中文字幕无码_手机看片国产欧美日韩高清_bd美妙第进化型

咨詢電話:
15628812133
09
2017/06

.htaccess詳解及.htaccess參數(shù)說明

發(fā)布時間:2017-06-09 16:12:46
發(fā)布者:pengyifeng
瀏覽量:
0

.htaccess是什么

啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:AccessFileName .config。

籠統(tǒng)地說,.htaccess可以幫我們實現(xiàn)包括:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件等一些功能。

工作原理

.htaccess文件(或者”分布式配置文件”)提供了針對每個目錄改變配置的方法即在一個特定的目錄中放置一個包含指令的文件其中的指令作用于此目錄及其所有子目錄。

說明:

如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:

AccessFileName .config

通常,.htaccess文件使用的配置語法和主配置文件一樣。AllowOverride指令按類別決定了.htaccess文件中哪些指令才是有效的。如果一個指令允許在.htaccess中使用,那么在本手冊的說明中,此指令會有一個覆蓋項段,其中說明了為使此指令生效而必須在AllowOverride指令中設(shè)置的值。

htaccess語法教程

RewriteEngine On
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]

【RewriteEngine On】

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

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

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

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

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

【RewriteCond %{REQUEST_FILENAME} !-f】

【RewriteCond %{REQUEST_FILENAME} !-d】

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

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

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

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

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

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

現(xiàn)在說說出現(xiàn)的問題,RewriteRule ^(.*)$ /blog/$1 前部分 ^(.*)$ 將會匹配當前請求的url。

例如:請求網(wǎng)址是http://www.xxx.com/a.html,到底是匹配整個http://www.xxx.com/a.html,還是只匹配/a.html即反斜杠后面的成分,還是只匹配a.html。

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

屏蔽IP

禁止特定的IP


order allow,deny
allow from all

deny from 1.1.1.1 ;寫要封的IP
只允許特定的IP訪問
order deny,allow
deny from all
allow from 61.228.209.85
主域名指向子目錄
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ subfolder/index.php [L]
防止.htaccess文件被查看

order allow,deny
deny from all

其他文件也可以類似這樣處理

規(guī)范www

全部統(tǒng)一到帶 www,例如將cnwenhui.cn 統(tǒng)一到 www.hi7788.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
全部統(tǒng)一到不帶www,例如將 www.hi7788.com 統(tǒng)一到 cnwenhui.cn
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]
防止別人的域名解析到自己的獨立IP
RewriteEngine On
RewriteCond %{HTTP_HOST} !(^www\.yourdomain\.com$) [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]

這個可以完成如下幾個功能:

如果你的網(wǎng)站綁定多個域名,為了只使用一個域名,就可以設(shè)置如上規(guī)則,例如網(wǎng)站綁定了 www.idcspy.com www.enmabiz.com 那么為了防止重復(fù)的url,就可以把上面的域名設(shè)置為www.idcspy.com,這樣來自www.enmabiz.com所有的訪問都會重定向到 www.idcspy.com

如果你用的是獨立IP,那么別人就可以把它的域名解析到你的IP上,這個時候可以用這個規(guī)則,其他所有解析到你的IP上的域名都會轉(zhuǎn)向到你設(shè)置的域名上。

設(shè)置時區(qū)

在 Htaccess文件中加入 SetEnv TZ Asia/Chongqing 設(shè)置時區(qū),Asia/Chongqing 換成你要設(shè)置的時區(qū),Asia/Chongqing就表示北京時間。


自定義錯誤頁面

下面是各種錯誤頁面的定義方式,把 /cgi-bin/exxx.php 部分修改成你要使用的錯誤頁面的路徑即可。


關(guān)鍵詞:
返回列表