標籤歸檔:PCRE的UTF8編碼支持

Nginx、PCRE和中文URL(UTF8編碼)rewrite路徑重寫匹配問題

最近遇到了使用Nginx 重寫中文UTF8編碼路徑的問題。 才發現默認情況下Nginx的rewrite是不支持UTF8匹配的。 比如:

rewrite ^/(..)$ /2個字符文章.html break; #用2個點
可以匹配到 /ab 或 /51, 但 /漢字 是匹配不到的。 我測試了一下, 要匹配兩個字的 /漢字 路徑, 得用

rewrite ^/(……)$ /2個漢字文章.html break; #要用六個點

如果要讓 ^/(..)$ 匹配到2個漢字字符,得開啟Nginx對UTF8字符的正則支持, 準確點說是開啟Nginx使用的PCRE庫的對UTF8字符的支持。因為Nginx的rewrite模塊是調用PCRE來處理正則的。 如果PCRE沒有問題,Nginx支持UTF8編碼的重寫樣式是:

rewrite "(*UTF8)^/(..)$" /2個字符文章.html break;
#注意(*UTF8)前綴和引號的加入。

繼續閱讀

發表在 信息處理, 站長文檔 | 標籤為 , , , , , , , , , , , , , | 2 條評論