.htaccess參數說明,如何寫以及對網站建設的作用
導讀:建站文章建站文章htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。重定向插件Helicon ISAPI_Rewrite 3.1版本也使用這個建站技術建站技術模板。
htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。重定向插件Helicon ISAPI_Rewrite 3.1版本也使用這個文件,語法基本一樣。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。下面我們介紹下htaccess如何寫:
【RewriteEngine on】表示重寫引擎開啟,如果要關閉就改為off,作用就是開啟或關閉以下的語句,這樣就不需要一條一條的注釋語句了。
【RewriteCond %{HTTP_HOST} ^(www\.)?znzncn\.com$】這是重寫條件,前面%{HTTP_HOST}表示當前訪問的網址,只是指域名部分,格式是www.znzncn.com(不包括“http://”和“/”),^表示字符串開始,$表示字符串結尾。\.表示把這個點.進行了轉義 ,如果不轉義也行,推薦轉義,防止有些服務器不支持。?表示前面括號里面的www\.出現0次或1次,這句規則的意思就是如果訪問的網址是znzncn.com或者www.znzncn.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表示反向匹配,引用的是前面第一個圓括號的部分,即^(.*)$中 的.* 。
這里會有一個問題:根據RewriteBase規則規定,如果rewritebase為/,將會匹配a.html,不帶前面的反斜杠,所以上條語句應該寫成RewriteRule ^(.*)$ blog/$1(不帶/),不過實際應用上帶上前面的反斜杠,也可以用,可能帶不帶都行。現在問題出來了,如果不設置rewritebase 為/ ,將會匹配整個網址http://www.znzncn.com/a.html,顯然這是錯誤的,所以應該添加這條:RewiteBase /。
還有一個問題:你不能保證每個人輸入的網址都是小寫的,如果輸入大寫的呢?linux系統是區分大小寫的,所以應該在RewriteCond后添加[NC]忽略大小寫。
【RewriteCond %{HTTP_HOST} ^(www\.)?znzncn\.com$】【RewriteRule ^(/)?$ blog/index.php [L]】這兩句的意思是指請求的host地址是www.znzncn.com或znzncn.com時,如果地址的結尾只有0個或者1個“/”時,將會重寫到子目錄下的主頁,這主要因為重寫后的地址是不能自動尋找主頁的,需要自己指定。如果后面還繼續有語句的,就不應該加上最后的[L],因為這是表示最后一條語句的意思。
完整的htaccess語句
RewriteEngine On
RewiteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.co織夢后臺模板m$ [NC]
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ blog/$1</p><p># 沒有輸入文件名的默認到到首頁
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ [NC]
RewriteRule ^(/)?$ blog/index.php [L]
防盜鏈語句
RewriteEngine on
RewiteBase /
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !znzncn.com [NC]
RewriteRule \.(jpg|gif|png|bmp|swf|jpeg)$ /error/daolian.gif [R,NC,L]
網址規范化htaccess語句
RewriteEngine on
RewriteCond %{http_host} ^znzncn.com [NC]
RewriteRule ^(.*)$ http://www.znzncn.com/$1 [R=301,L]
自定義404錯誤頁面
ErrorDocument 404 /404.html
網站升級的時候,只有特定IP才能訪問,其他的用戶將看到一個升級頁面
RewriteEngine on
RewriteCond %{REQUEST_URI} !/upgrade.html$
RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30
RewriteRule $ http://www.znzncn.com/upgrade.html [R=302,L]
老域名轉向新域名
RewriteEngine On
RewriteRule ^(.*)$ http://www.znzncn.com/$1[R=301,L]
還有很多htaccess語句規則
# 把html后綴的url鏈接到php文件
# $1指代的是前面第1個用括號括起來的內容
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
# 或者把舊文件夾的內容鏈接到新文件夾
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
# 隱藏文件名
RewriteRule ^/?([a-z]+)$ $1.php [L]
最后,把一些常用的織夢模板免費正則表達式列一下吧
\w匹配字母或數字或下劃線或漢字
\s匹配任意的空白符
\d匹配數字
\b匹配單詞的開始或結束
^匹配字符串的開始
$匹配字符串的結束
*重復零次或更多次
+重復一次或更多次
?重復零次或一次
{n}重復n次
{n,}重復n次或更多次
{n,m}重復n到m次
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-08-06 ,文章.htaccess參數說明,如何寫以及對網站建設的作用主要講述網站建設,如何寫,網站建設網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_36893.html