1. 程式人生 > >nginx偽靜態(超級簡單)

nginx偽靜態(超級簡單)

 

由於只是學習偽靜態就自己配個host隨便玩了,也沒多寫配置檔案,注意是偽靜態

上面的一條偽靜態(rewrite)是將訪問wojiuwangla.com/wangla.html給301(重定向)到百度。

首先配置host,我的電腦是win10的,host檔案在C:\Windows\System32\drivers\etc\hosts

訪問結果

訪問域名,正常返回,然後訪問偽靜態試試看

別激動,還沒敲回車

Look,結果出來了,從http://wojiuwangla.com/aa.html跳轉到百度了。

 

偽靜態需要用到的正則匹配,只是copy了一部分

Copy以下的正則來源:https://www.jb51.net/article/91444.htm

 

平時常用的:

~      為區分大小寫的匹配。
~*     不區分大小寫的匹配(匹配firefox的正則同時匹配FireFox)。
!~     不匹配的
!~*    不匹配的

.     匹配除換行符以外的任意字元
\w     匹配字母或數字或下劃線或漢字


\s     匹配任意的空白符
\d     匹配數字
\b     匹配單詞的開始或結束
^     匹配字串的開始
$     匹配字串的結束

*     重複零次或更多次
+     重複一次或更多次
?     重複零次或一次
{n}     重複n次


{n,}     重複n次或更多次
{n,m}     重複n到m次
*?     重複任意次,但儘可能少重複
+?     重複1次或更多次,但儘可能少重複
??     重複0次或1次,但儘可能少重複
{n,m}?     重複n到m次,但儘可能少重複
{n,}?     重複n次以上,但儘可能少重複

\W     匹配任意不是字母,數字,下劃線,漢字的字元
\S     匹配任意不是空白符的字元
\D     匹配任意非數字的字元
\B     匹配不是單詞開頭或結束的位置
[^x]     匹配除了x以外的任意字元

 

OK,剛才只是熱身,接下來繼續

這次多添加了兩條新規則

1:訪問wojiuwangla.com/wangla.html跳轉到百度

2:訪問wojiuwangla.com/純數字至少一個數字.html跳轉到QQ官網

3:訪問wojiuwangla.com/匹配字母或數字或下劃線組合.html 跳轉到問道官網(有沒有 道十二 的道友)

 

重啟完訪問試試看

回車後結果

已經跳轉了,因為我們的偽靜態是\d變數匹配,所以我們輸入其他數字也是會跳轉

OK,讓我們試試下一條偽靜態

回車後結果

也跳轉了,我們再試試數字字母,數字下劃線,數字字母下劃線組合之後的結果

OK,然後我們在試試在本地伺服器上進行偽靜態跳轉

建立測試頁面

 

修改配置檔案,新增網站根目錄,以及修改偽靜態規則,因為上面兩條影響的太大,無論你是什麼開頭,只要是html結尾的就會跳轉到相應的網站。

記得清楚瀏覽器快取,否則可能會出現還是返回問道官網的頁面

訪問結果如下

接下來把固定的偽靜態改一下,這樣的話,訪問符合條件的php檔案都會跳到相對應的html上,比如訪問/index-3.php就會跳轉到/index.html上。

規則沒有太多變化,只不過把第一個正則引數(\w+)寫到要顯示的對應的路徑上了,第一個引數是$1,第二個是$2

 

再建立個檔案測試真實性

不好意思,我沒配置php,我給php改個名

OK,再試試看

換成test試試

OK,都已經跳轉,我們嘗試多個引數

檔案也改名了,好了,再試試看,千萬記住,修改完配置檔案必須重啟/過載,要不不會生效

OK,再瞭解一下長度限制,

訪問結果

 

 rewrite  "^/3-(\d{3,6}).php$"   /3-$1.html permanent;

前面那一段需要用雙引號引住,否則會被nginx認為}配置檔案已經結尾了,然後報錯。

{4,}代表最少4位數。最多無窮大。

 

偽靜態大致應該就是這樣的,可以在加多個引數後面跟不同的變數,根據自己的需求調整,萬變不離其宗,可以在這些的基礎上面修改,多個引數就是(\w+)-(\d+)-(\w+)這種的,後面跟$1-$2-$3一般來說不會輕易讓(\w+)(\d+)挨著,\w包括了數字字母下劃線而且有+號,代表不止是一個,如果匹配os91f0_31na2222這個字串的話,直接用一個(\w+)就可以的,不用再多寫個(\d+),也可以精確寫成(\w+)na(\d+)。

還得說一點,注意偽靜態的順序,

比如你的第一條是

^(.*)/$  https://www.baidu.com/ last;

第二條是

^/test/$ https://www.qq.com/ last;

這樣的話第二條不會生效