当前位置 主页 > 服务器问题 > nginx问题汇总 >

    Nginx伪静态配置和常用Rewrite伪静态规则集锦(2)

    栏目:nginx问题汇总 时间:2018-10-06 17:12

    复制代码 代码如下:
    include /var/www/html/jb51/bbs/.htaccess; (备注:把路径改成你.htaccess文件的具体位置)

    wq保存退出。

    5. 重新加载nginx配置文件:

    复制代码 代码如下:
    /etc/init.d/nginx reload

    Nginx常用Rewrite伪静态规则:

    伪静态规则是我们做伪静态的一个非常重的参数了,如果我们能理解得越多就可以快速的写出最优的伪静态代码了,下面给大家整理了一些例子,希望能给你有帮助。

    本日志内容来自互联网和平日使用经验,整理一下方便日后参考。
    正则表达式匹配,其中:

    复制代码 代码如下:
    * ~ 为区分大小写匹配
    * ~* 为不区分大小写匹配
    * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
    文件及目录匹配,其中:
    * -f和!-f用来判断是否存在文件
    * -d和!-d用来判断是否存在目录
    * -e和!-e用来判断是否存在文件或目录
    * -x和!-x用来判断文件是否可执行
    flag标记有:
    * last 相当于Apache里的[L]标记,表示完成rewrite
    * break 终止匹配, 不再匹配后面的规则
    * redirect 返回302临时重定向 地址栏会显示跳转后的地址
    * permanent 返回301永久重定向 地址栏会显示跳转后的地址

    一些可用的全局变量有,可以用做条件判断(待补全)

    复制代码 代码如下:
    $args
    $content_length
    $content_type
    $document_root
    $document_uri
    $host
    $http_user_agent
    $http_cookie
    $limit_rate
    $request_body_file
    $request_method
    $remote_addr
    $remote_port
    $remote_user
    $request_filename
    $request_uri
    $query_string
    $scheme
    $server_protocol
    $server_addr
    $server_name
    $server_port
    $uri

    结合QeePHP的例子

    复制代码 代码如下:
    if (!-d $request_filename) {
    rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1&action=$2&$3 last;
    rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;
    break;

    多目录转成参数

    复制代码 代码如下:
    abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
    if ($host ~* (.*)/.domain/.com) {
    set $sub_name $1;
    rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
    }

    目录对换

    复制代码 代码如下:
    /123456/xxxx -> /xxxx?id=123456
    rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;
    例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
    if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /nginx-ie/$1 break;
    }

    目录自动加“/”

    复制代码 代码如下:
    if (-d $request_filename){
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    }

    禁止htaccess

    复制代码 代码如下:
    location ~//.ht {
    deny all;
    }

    禁止多个目录

    复制代码 代码如下:
    location ~ ^/(cron|templates)/ {
    deny all;
    break;
    }

    禁止以/data开头的文件
    可以禁止/data/下多级目录下.log.txt等请求;