錯誤日誌檔案:
/logs/error.log(或error_log)日誌級別(級別從高到低):
debug, info, notice, warn, error, crit, alert, emerg.低階別的日誌選項會包括高階別的資訊,如info會包含notice、warn的資訊
預設配置:
loglevel warn除錯配置(舉例):
loglevel alert rewrite:trace8重定向(內部跳轉301)
舉例:將.htm訪問跳轉到.html上
rewriteengine
onrewriterule
^(.*)\.htm$ $1.shtml
r 重定向(外部跳轉302)
備註:r方式的重定向預設是相對乙個基準路徑的,加上/才會訪問當前根目錄下。可以通過設定rewritebase來設定基準路徑。
舉例:將.htm訪問跳轉到根目錄下的.html上
rewriteengine
onrewriterule
^(.*)\.htm$ /$1.html[r]
301和302的區別
c 滿足條件執行下一跳規則
例子:*.htm會跳轉到*.php,*.html不會跳轉到*.php
rewriteengine
onrewriterule
^(.*)\.htm$ $1.html[c]
rewriterule
^(.*)\.html$ $1.php
l 該規則為最後一條執行規則,下面的規則都不執行
例子:
rewriteengine
onrewriterule
^(.*)\.html$ first.php?url=$1
[l]rewriterule
^(.*)\.html$ second.php?url=$1
ne 特殊字元不進行轉義
例子:會顯示#(沒有轉義)
rewriteengine
onrewriterule
^(.*)\.html$ /index.php#$1
[r,ne]
nc 匹配模式大小寫不敏感
例子:/aaa/… 也會被匹配
rewriteengine
onrewriterule
^aaa/(.*)\.html$ /bbb/$1.html[nc]
g 鏈結失效(gone)
例子:
rewriteengine
onrewriterule
^aaa/(.*)$ -[g]
qsa 擷取url中的鍵值對
例子:訪問per/index.php?name=xiaoming會跳轉到/per.php?url=index.php&name=xiaoming
rewriteengine
onrewriterule
^per/(.*)$ /per.php?url=$1
[r,qsa]
例子:
rewriteengine
onrewriterule
^(.*)\.htm$ $1.html
rewriteengine
onrewriterule
^(.*)\.htm$ /$1.html[r]
rewriteengine
onrewritebase /
rewriterule
^(.*)\.htm$ $1.html[r]
內部跳轉和外部跳轉(重定向)的區別
內部跳轉url不會改變
外部跳轉url會改變成跳轉到的**
很容易理解,滿足rewritecond的,才會執行rewriterule
舉例:
rewriteengine
[r]
判斷為目錄 -d
判斷為檔案 -f
加[or]之後,只要有cond之間乙個滿足,即可執行rule
而預設情況是所有cond之間為and,即所有cond成立,才執行rule
例子:下面例子中會執行rule
rewriteengine on
rewritecond
c:/windows/ -d [or]
rewritecond
c:/windows/ -f
rewriterule ^(.*)\.htm$
$1.html
apache的rewrite模組進行rewrite的時候,需要將規則直接寫到http.conf的rewrite模組中,並且規則變動一次就需要重啟apache伺服器一次。這個讓開發者比較鬱悶。這裡有乙個rewritemap解決了部分的問題,他的工作就是將乙個對映關係以map的形式儲存在乙個檔案中,我們可以通過修改這個檔案的對應關係而不需要重啟apache伺服器就可以應用對映關係。
常用格式
txt格式 一般對映
rnd格式 隨機對映,匹配結果可能有多個
例子1:瀏覽器訪問localhost/tt1會訪問test11。。。
httpd.conf內部
rewritemap pages txt:e:/page.txt.htaccess中
rewriterule ^(.*).html$ $page.txt中
#首行加注釋或空一行可以得出正常結果,原因待分析例子2:瀏覽器訪問localhost/url1會隨機訪問localhost/s1(或s2、s3)tt1 test11
tt2 test22
在httpd.conf內部
rewritemap dirs rnd:e:/dir.txt.htaccess中
rewriterule ^(.*).html$ /$(dirs:$1|notfound)/$1.phpdir.txt中
#首行加注釋或空一行可以得出正常結果例子:只能通過localhost訪問url1 s1|s2|s3
url2 s4|s5
rewriteengine
onrewritecond
% !^$
rewritecond
% !localhost[nc]
rewriterule
\.(gif|png|jpg|jpeg)$ -[f,nc]
防盜煉針對http_referer而制定,部分瀏覽器(或外掛程式)做了一些改變,傳送請求不帶http_referer,這種方法則無法防盜煉
httpd.conf中
#拒絕指定ip訪問(重定向)
rewritemap hosts-deny txt:
e:/host-deny.txt
.htaccess中
rewriteengine
onrewritecond
$|notfound} deny
rewriterule
^ -[f]
host-deny中新增限制ip
#測試限制ip
192.168
.2.100 deny
127.0
.0.1 deny
偽靜態與重定向之初體驗
偽靜態 重點在偽 首先靜態與動態的區別在於資料的內容是否會改變,而不是形式是否改變。比如,一些門戶 首頁的html檔案中雖然包含一些動態的,但是內容從始至終都不更改,不與資料庫發生互動,頁面的資料一旦寫好,就不再改變的這一類檔案稱為靜態頁,所以常常是以.html和.htm結尾 動態網頁通常包含與資料...
偽靜態與重定向之初體驗
偽靜態 重點在偽 首先靜態與動態的區別在於資料的內容是否會改變,而不是形式是否改變。比如,一些門戶 首頁的html檔案中雖然包含一些動態的,但是內容從始至終都不更改,不與資料庫發生互動,頁面的資料一旦寫好,就不再改變的這一類檔案稱為靜態頁,所以常常是以.html和.htm結尾 動態網頁通常包含與資料...
Linux實現301重定向和偽靜態方法
在網上查詢了一下還沒有人分享linux主機如何通過.htaccess檔案同時實現301重定向和偽靜態的,為幫助朋友少走彎路,特以把經驗分享一下。用pw做了乙個新站,備案審核通過, google也均已收錄。但有個問題是,不像google那樣有 程式設計客棧管理員工具,可以設定主網域名稱,ksqznjn...