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;
這樣的話第二條不會生效