nginx 配置rewrite 笔记
nginx 配置rewrite笔记:
通过下面的示例来说明一下,
1. 先说说location :
   location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样:
   location ^~ /public/ {
        root /data/wwwroot/a.php.abc.cc;
   }
   location ^~ /public/     表示匹配以 “/public/” 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出。
   location / {
        root /data/wwwroot/a.php.abc.cc;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_pass  unix:/dev/shm/php-cgi.sock;
    }
    
    location /  { ... }    表示匹配所以的url,匹配成功执行其中的内容,执行完毕后停止并退出。
   
    rewrite ^/e10adc3949ba[/]?$ /e10adc3949ba.php last;  表示将 /e10adc3949ba 或 /e10adc3949ba/  开头的url修改为 /e10adc3949ba.php
    rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)$ /e10adc3949ba.php?c=$1&a=$2 last;  表示将pathinfo地址转换为参数地址,
                                                                                        比如原url: /e10adc3949ba/help/manage/lists  转换后:/e10adc3949ba.php?c=help/manage&a=lists
    
server {
    listen 80;
    server_name a.php.abc.cc;
    access_log /data/wwwlogs/a.php.abc.cc_nginx.log combined;
    index index.html;
    root /data/wwwroot/a.php.abc.cc;
    location ^~ /public/ {
        root /data/wwwroot/a.php.abc.cc;
    }
    location ^~ /datas/ {
        root /data/wwwroot/a.php.abc.cc;
    }
    rewrite ^/e10adc3949ba[/]?$ /e10adc3949ba.php last;
    rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)$ /e10adc3949ba.php?c=$1&a=$2 last;
    rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)\?(.*)$ /e10adc3949ba.php?c=$1&a=$2&$3 last;
    location ^~ /e10adc3949ba {
        root /data/wwwroot/a.php.abc.cc;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/e10adc3949ba.php;
        fastcgi_pass  unix:/dev/shm/php-cgi.sock;
        break;
    }
    rewrite ^/([a-z]*)/([a-z]*)$ /index.php?m=home&c=$1&a=$2 last;
    rewrite ^/([a-z]*)/([a-z]*)\?(.*)$ /index.php?m=home&c=$1&a=$2&$3 last;
    location / {
        root /data/wwwroot/a.php.abc.cc;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_pass  unix:/dev/shm/php-cgi.sock;
    }
}
整个配置的意思为:
    
1.优先匹配/public和/datas,这两个中包含的是公用的可公开的文件,比如js,css,自定义文件等等。    
2. 如果1没有匹配上,则剩下的都是php文件。php分为两类,一个是e10adc3949ba.php (后台入口),另一个是index.php(前台入口)。
3. 先配置后台,后台的都需要包含 /e10adc3949ba , 通过这个前缀对后台进行匹配。匹配到就调用后台入口执行,执行完毕退出。
4. 上下的默认都是前台内容,先进行url转换,将phpinfo格式的url转换为参数模式。然后调用index.php入口文件执行。
5. 最后的匹配还包含了 / 的情况和其他错误的地址情况都会匹配上。错误处理由代码完成。
 
                    
                 
                
            
         
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号