五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > Rewrite規(guī)則偽靜態(tài)的配置和常見正則表達式

Rewrite規(guī)則偽靜態(tài)的配置和常見正則表達式

文章來源:365jz.com     點擊數(shù):1229    更新時間:2018-07-30 08:53   參與評論

Windows server 2008R2 IIS7.5 Rewrite偽靜態(tài)規(guī)則
使用說明:
1. 將 Rewrite 拷貝到G:\Rewrite
2. 在IIS的Isapi上添加這個篩選器, 篩選器名稱Rewrite,可執(zhí)行文件選擇 Rewrite.dll
3. 重新啟動IIS
4. httpd.ini 是配置文件,如果您了解Rewrite 規(guī)則,可以直接對其進行編輯
5. 規(guī)則適用于: DZ6.0/DZ6.1/DZ7.0/DZ7.2

圖解:

點擊左邊IIS站點

 

打開Isapi篩選器

 

增加Rewrite規(guī)則

 


nginx rewrite 規(guī)則

rewrite主要的功能就是實現(xiàn)URL的重寫,Nginx的Rewrite規(guī)則采用perl兼容正則表達式的語法規(guī)則匹配

需要Nginx的Rewrite功能,在編譯Nginx之前,需要編譯安裝PCRE庫。

通過Rewrite規(guī)則,可以實現(xiàn)規(guī)范的URL、根據(jù)變量來做URL轉向及選擇配置。例如:單一入口,偽靜態(tài),URL跳轉等。

指定

指令包括:   if、rewrite、set、return、break等

if指令

作用域:server,location

對給定的條件判斷。如果為真,大括號內的rewrite指令將被執(zhí)行。

if條件:

變量名,錯誤的值包括:空字符串或者以0開始的字符串;
= ,!= 變量比較
~ 區(qū)分大小寫字母匹配
~* 不區(qū)分大小寫字母匹配
!~ 區(qū)分大小寫字母不匹配
!~* 不區(qū)分大小寫字母不匹配
-f,!-f 檢查一個文件是否存在
-d,!-d 檢查一個目錄是否存在
-e ,!-e 檢查一個文件、目錄、符號鏈接是否存在
x ,!-x 檢查一個文件是否可執(zhí)行

return

停止處理并返回指定狀態(tài)碼(code)給客戶端。

if ($host !~ "^((.*\.)?(xxx\.(com|com\.cn|cn)|\d{1,3}(\.\d{1,3}){3})(:\d+)?$") { 
   return 403;
}

rewrite

如果一個URI匹配指定的正則表達式regex,URI就按照replacement重寫。

rewrite按配置文件中出現(xiàn)的順序執(zhí)行。flags標志可以停止繼續(xù)處理。

flags標志:

last 重寫后,馬上發(fā)起一個新的請求,再次進入server塊,重試location匹配,超過10次匹配不到報500錯誤break 直接使用當前資源,不再執(zhí)行l(wèi)ocation里余下的語句,完成本次請求
redirect 返回302臨時重定向,地址欄顯示重定向后的url
permant 返回301永久重定向

set指令

定義一個變量并賦值,值可以是文本,變量或者文本變量混合體。

set $varname 'hello';

uninitialized_variable_warn

開啟或關閉記錄未初始化變量的警告信息,默認開啟

Rewrite常用的全局變量

  • $args:變量中存放了URL中的指令。

  • $content_length:保存了請求報文頭部中的content-lenght字段。

  • $content_type:保存了請求頭部中的content-type字段。

  • $document_root:保存了針對當前資源的請求的系統(tǒng)根目錄。

  • $document_uri:保存了當前請求中不包含指令的URI,主注意是不包含請求的指令。

  • $host:存放了請求的服務器名稱。

  • $http_user_agent:客戶端瀏覽器的詳細信息。

  • $http_cookie:客戶端的cookie信息。

  • $limit_rate:如果nginx服務器使用limit_rate配置了顯示網(wǎng)絡速率,則會顯示,如果沒有設置, 則顯示0。

  • $remote_addr:存放了客戶端的地址,注意是客戶端的公網(wǎng)IP,也就是一家人訪問一個網(wǎng)站,則會顯示為路由器的公網(wǎng)IP。

  • $remote_port:客戶端請求Nginx服務器時隨機打開的端口,這是每個客戶端自己的端口。

  • $remote_user:已經(jīng)經(jīng)過Auth Basic Module驗證的用戶名。

  • $request_body_file:做反向代理時發(fā)給后端服務器的本地資源的名稱。

  • $request_method:請求資源的方式,GET/PUT/DELETE等。

  • $request_filename:當前請求的資源文件的路徑名稱,由root或alias指令與URI請求生成。

  • $request_uri:包含請求參數(shù)的原始URI,不包含主機名。

  • $squery_string:保存了URL請求的指令,與 $args相同。

  • $scheme:請求的協(xié)議,如ftp,https,http等。

  • $server_protocpl:保存了客戶端請求資源使用的協(xié)議的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等。

  • $server_addr:保存了服務器的IP地址。

  • $server_name:服務器的主機名。

  • $server_port:服務器的端口號。

  • $uri:與$document_uri相同,是一個不包含指令的uri地址。

示例:

    if ($request_method = POST) {
        return 405;
    } 

    location ~* /\.(sql|bakup|old|tpl|)$ {
        deny all;
    }

    if (!-f $request_filename){ 
        break;
        proxy_pass  http://127.0.0.1; 
    } 


    location ~* \.(gif|jpg|png|swf|flv)$ {
        valid_referers none blocked  *.xxx.com; 
        if ($invalid_referer) {
            return 404;
        }
    }

    location = / {
        proxy_pass http://new.test.com/index
    }

    location / {
        rewrite  ^/  http://www.baidu.com;
    } 

    location ^~ /static/ {
        root /webroot/static/;
    }

    location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
        root /webroot/static/res/;
    }

虛擬主機

server {
    listen       80;
    server_name  www.test.com;
    root        /usr/share/nginx/html;

    access_log  /var/log/nginx/log/host.access.log  main;
    error_log   /var/log/nginx/log/host.error.log;

    location ~* ^.+\.(jpg|jpeg|gif|png|bmp|css|js|swf|txt)$ {
        access_log off; 
        break;  
    }

    location / { 
        try_files $uri $uri/ /index.php?$query_string;
        index index.php index.html index.htm;
    } 

    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        include        fastcgi_params;
    }
    
    location ~* /\. {
        deny all;
    }
    
    
}

應該在 php.ini 文件中設置cgi.fix_pathinfo=0, 能避免掉很多不必要的 stat() 系統(tǒng)調用。

當運行一個 HTTPS 服務器時,需要添加 fastcgi_param HTTPS on;這樣才能正確地判斷連接是否安全。



Rewrite規(guī)則常見正則表達式


~      為區(qū)分大小寫的匹配。
~*     不區(qū)分大小寫的匹配(匹配firefox的正則同時匹配FireFox)。
!~     不匹配的
!~*    不匹配的
.     匹配除換行符以外的任意字符
\w     匹配字母或數(shù)字或下劃線或漢字
\s     匹配任意的空白符
\d     匹配數(shù)字
\b     匹配單詞的開始或結束
^     匹配字符串的開始
$     匹配字符串的結束
*     重復零次或更多次
+     重復一次或更多次
?     重復零次或一次
{n}     重復n次
{n,}     重復n次或更多次
{n,m}     重復n到m次
*?     重復任意次,但盡可能少重復
+?     重復1次或更多次,但盡可能少重復
??     重復0次或1次,但盡可能少重復
{n,m}?     重復n到m次,但盡可能少重復
{n,}?     重復n次以上,但盡可能少重復
\W     匹配任意不是字母,數(shù)字,下劃線,漢字的字符
\S     匹配任意不是空白符的字符
\D     匹配任意非數(shù)字的字符
\B     匹配不是單詞開頭或結束的位置
[^x]     匹配除了x以外的任意字符
[^aeiou]     匹配除了aeiou這幾個字母以外的任意字符
捕獲     (exp)     匹配exp,并捕獲文本到自動命名的組里
(?<name>exp)     匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
(?:exp)     匹配exp,不捕獲匹配的文本,也不給此分組分配組號
零寬斷言     (?=exp)     匹配exp前面的位置
(?<=exp)     匹配exp后面的位置
(?!exp)     匹配后面跟的不是exp的位置
(?<!exp)     匹配前面不是exp的位置
注釋     (?#comment)     這種類型的分組不對正則表達式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀


如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答?。?點擊進入論壇

發(fā)表評論 (1229人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號