zoukankan      html  css  js  c++  java
  • 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. 最后的匹配还包含了 / 的情况和其他错误的地址情况都会匹配上。错误处理由代码完成。

  • 相关阅读:
    python_day3
    python-day2
    python-day1
    【收集】安卓手机在市场占比的网址查找
    while循环
    switch多选择结构
    if选择结构
    顺序结构
    Scanner:求和 、求平均值
    Scanner:用户交互
  • 原文地址:https://www.cnblogs.com/mywebnumber/p/5997715.html
Copyright © 2011-2022 走看看