ginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
wordpress nginx多站点rewrite(重写)规则
![wordpress nginx多站点rewrite(重写)规则](https://img.taocdn.com/s3/m/a8044932ccbff121dd3683bc.png)
wordpress nginx多站点rewrite(重写)规则wordpress多站点模式可以被应用在多种方式上。
其中最常用的是在"子目录"模式或者"二级域名"模式上。
Nginx提供了两种特殊的指令:"x-accel-redirect"和"map",使用这两个指令可以使得wordpress多站点的网络服务实现伪静态功能。
wordpress多站点模式可以被应用在多种方式上。
其中最常用的是在"子目录"模式或者"二级域名"模式上。
Nginx提供了两种特殊的指令:"x-accel-redirect"和"map",使用这两个指令可以使得wordpress多站点的网络服务实现伪静态功能。
wordpress多站点使用子目录重写规则配置中修改为自己的站点域名。
map$uri$blogname{~^(?P/[^/]+/)files/(.*)$blogpath;}map$blogname$blogid{default-999;#Ref:/extend/plugins/nginx-helper/#include/var/www/wordpress/wp-content/plugins/nginx-helper/map.conf;}server{server_;root/var/www//htdocs;index index.php;#多站点配置location~^(/[^/]+/)?files/(.+){try_files/wp-content/blogs.dir/$blogid/files/$2/wp-includes/ms-files.php?file=$2; access_log off;log_not_found off;expires max;}#avoid php readfile()location^~/blogs.dir{internal;alias/var/www//htdocs/wp-content/blogs.dir;access_log off;log_not_found off;expires max;}if(!-e$request_filename){rewrite/wp-admin$$scheme://$host$uri/permanent;rewrite^(/[^/]+)?(/wp-.*)$2last;rewrite^(/[^/]+)?(/.*\.php)$2last;}location/{try_files$uri$uri//index.php?$args;}location~\.php${try_files$uri=404;include fastcgi_params;fastcgi_pass php;#此处可以继续添加伪静态规则}wordpress多站二级域名重写规则配置中54ux修改为自己的站点域名。
nginx 重写规则
![nginx 重写规则](https://img.taocdn.com/s3/m/9fdeb832a200a6c30c22590102020740be1ecdb4.png)
nginx 重写规则Nginx是一个高性能的Web服务器和反向代理服务器,它支持大量并发连接,具有强大、灵活的配置选项,可以通过重写规则来定制化配置,实现功能扩展和优化。
重写规则是Nginx的一个核心功能,它可以让我们通过修改请求的URI或者args参数来实现URL的重定向、转换、隐藏、伪静态化等功能。
在Nginx中,重写规则主要通过location块和rewrite指令来实现。
下面我们将详细介绍Nginx中的重写规则。
一、location语法在Nginx配置文件中,我们可以通过location语法来设置URL的匹配规则和对应的配置信息。
location语法大致如下:location [路径] {配置信息}其中,路径可以是以下格式:- 精确匹配:/path,表示只匹配指定的URI。
- 前缀匹配:/prefix/,表示匹配指定目录下的所有URI。
- 正则匹配:~* \.php$,表示匹配符合正则表达式的URI。
配置信息可以包括:访问权限、重写规则、反向代理、静态文件服务等。
二、rewrite指令rewrite指令是Nginx中用来实现URL重写的关键指令,语法格式如下:rewrite regex replacement [flag];其中,regex表示所匹配的正则表达式,replacement表示替换后的URI,flag表示可选的标志位,常用的标志位包括:- last:执行完当前规则后,停止执行后续规则。
- break:执行完当前规则后,直接跳出location块。
- redirect:返回301或302状态码,对客户端进行重定向。
- permanent:返回301状态码,永久重定向。
下面是一些示例:1、将所有URI重定向到/index.htmllocation / {rewrite ^(.*)$ /index.html break;}2、将所有以.php结尾的URI重定向到对应的HTML页面3、将所有URI中的参数加上前缀prefix四、使用变量Nginx还支持使用变量来实现复杂的重写规则,常用的变量包括:- $uri:当前请求的URI。
nginx的rewrite用法
![nginx的rewrite用法](https://img.taocdn.com/s3/m/68eeac59974bcf84b9d528ea81c758f5f61f29b5.png)
nginx的rewrite用法Nginx的rewrite用法:Nginx是一个流行的开源Web服务器软件,它具有强大的功能和灵活的配置选项。
其中一个重要的功能是rewrite模块,它允许对请求的URL进行重写和重定向。
通过使用rewrite指令,可以修改请求的URL,将其重定向到另一个URL或者改变访问路径。
这对于维护网站的URL结构、处理URL转发或者实现重定向非常有用。
下面是一些常见的rewrite用法示例:1. 简单的重定向:rewrite ^/old-url$ /new-url permanent;这个示例将匹配旧的URL "/old-url",并将其重定向到新的URL "/new-url"。
使用permanent关键字可以确保客户端浏览器进行永久重定向。
2. 匹配并重新使用URL片段:rewrite ^/category/([a-zA-Z0-9_-]+)/([0-9]+)$ /index.php?category=$1&page=$2 last;当访问形如"/category/books/1"的URL时,将把URL重写为"/index.php?category=books&page=1"。
在此示例中,我们使用正则表达式来匹配URL的不同部分,并将其作为参数传递给重定向后的URL。
3. 阻止对特定目录或文件的访问:location /restricted/ {rewrite ^(.*)$ /forbidden.html last;}当访问以"/restricted/"开头的URL时,将通过重定向将访问者导向"/forbidden.html"页面。
这对于限制访问某些特定资源或目录非常有用。
4. 重写代理请求:location /proxy/ {rewrite ^/proxy/(.*)$ /$1 break;proxy_pass http://backend-server;}当访问以"/proxy/"开头的URL时,将使用重写规则将URL中的"/proxy/"部分删除,并将请求代理到后端服务器。
Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
![Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写](https://img.taocdn.com/s3/m/dce53d5ed0d233d4b04e694d.png)
Nginx 中rewrite 实现二级域名、三级域名、泛域名、路径的重写最常见静态地址重定向到带参数的动态rewrite "(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 反过来:带参数的动态地址重定向到静态地址if ($query_string ~* id=(.*)) {set $id $1;rewrite "A(.*)/article.asp$" $1/article/$id.htm last;} 泛域名解析view plaincopy to clipboardprint? server_name *; server_name_in_redirect off;#设置默认root set $rootdir /usr/local/nginx/html/w3cgroup/;#匹配三级或三级以上的域名if ($host ~* A(.+)\.([A\.]+)\.([A\.]+)\.([A\.]+)$) {}#匹配三级域名if ($host ~* A([A\.]+)\.([A\.]+)\.([A\.]+)\.([A\.]+)$) {#三级域名中有访问指定的目录则重定向到相应的二级域名rewrite "\+upload/?(.*)$" /$1 permanent;rewrite "A.+ijc/?(.*)$" /$1 permanent;break;}#匹配二级域名if ($host ~* A([A\.]+)\.([A\.]+)\.([A\.]+)$) {set $rs1 $1;}#设置www 时rootif ($rs1 ~* Awww$) {set $rootdir /usr/local/nginx/html/platform_ig/;#二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用lastrewrite "A.+upload/?(.*)$" upload/$1 last;rewrite "A.+ijc/?(.*)$" ijc/$1 last;break;}#设置非www 二级域名时rootif ($rs1 !~* Awww$) {set $rootdir /usr/local/nginx/html/w3cgroup/$rs1;#二级域名中有访问指定的目录则重定向到相应的二级域名下rewrite "\+upload/?(.*)$" /$1 permanent;rewrite "A.+ijc/?(.*)$" /$1permanent;break;}#应用rootroot $rootdir;index index.php index.html;error_page 404 http://$host/; 注意:if () {} 之间需要空格,否则Nginx.conf 会报unknow directive 错误! 参考:Nginx Rewrite Flags* last相当于Apache里的[L]标记,表示完成rewrite* break 终止匹配, 不再匹配后面的规则* redirect 返回302 临时重定向* permanent 返回301 永久重定向Nginx 正则表达式匹配* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配Nginx 文件及目录匹配* -f 和!-f 用来判断是否存在文件* -d 和!-d 用来判断是否存在目录* -e 和!-e 用来判断是否存在文件或目录* -x 和!-x 用来判断文件是否可执行Nginx 全局变量view plaincopy to clipboardprint?$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。
Nginx重写功能(Rewrite)
![Nginx重写功能(Rewrite)](https://img.taocdn.com/s3/m/4ad10b1e77c66137ee06eff9aef8941ea76e4b65.png)
Nginx重写功能(Rewrite)⽬录⼀、Nginx Rewrite概述⼆、Nginx Rewrite基本操作三、案例1、基于域名的跳转2、基于客户端 IP 访问跳转3、基于旧域名跳转到新域名后⾯加⽬录4、基于参数匹配(多余的)的跳转5、基于⽬录下所有 php 结尾的⽂件跳转6、基于最普通⼀条 url 请求的跳转⼀、Nginx Rewrite概述location是为了匹配访问的路径(URL)URL:就是⼀个具体路径/位置URI:指的是⼀个拥有相同类型/特性的对象集合Rewrite跳转场景URL看起来更规范、合理企业会将动态URL地址伪装成静态地址提供服务⽹址换新域名后,让旧的访问跳转到新的域名上服务端某些业务调整Rewrite跳转实现1.Nginx是通过ngx_http_rewrite_module模块⽀持url重写、⽀持if条件判断,但不⽀持else。
(Nginx哪些模块:核⼼/全局模块、HTTP模块、server模块、location if rewrite)2.另外该模块需要PCRE⽀持,应在编译Nginx时指定PCRE⽀持,默认已经安装。
3.根据相关变量重定向和选择不同的配置,从⼀个location跳转到另⼀个location,不过这样的循环最多可以执⾏10次,超过后Nginx将返回500错误。
4.同时,重写模块包含set指令,来创建新的变量并设其值,这在有些情景下⾮常有⽤的,如记录条件标识、传递参数到其他location、记录做了什么等等。
Rewrite实际场景Nginx跳转需求的实现⽅式使⽤rewrite进⾏匹配跳转使⽤if匹配全局变量后跳转使⽤location匹配再跳转(匹配的访问路径URL location可以匹配本地的重写以及跨服务器的跳转)rewrite放在server{}, if{},location{}段中(多个server模块 sever模块⾥包含location location包含if if⾥⾯包含rewrite)location只对域名后边的除去传递参数外的字符串起作⽤对域名或参数字符串使⽤if全局变量匹配使⽤proxy_pass反向代理Nginx正则表达式(什么是正则表达式:正则是作为精确匹配、过滤、筛选的⼀种执⾏规范)作⽤:1、精确匹配,减少遍历的消耗2、节省服务响应的资源消耗3、提⾼⽤户体验感4、提⾼服务器并发时、处理效率/性能Nginx使⽤正则的作⽤:Nginx作为运维⾓度前段接受、想⽤客户请求的直接对服务器所以需要考虑到Nginx的执⾏效率(精确匹配-类⽐)、性能(资源消耗)、抗压能⼒(⾼并发时处理能⼒)、⽤户体验感(⽤户访问群体)^ :匹配输⼊字符串的起始位置$ :匹配输⼊字符串的结束位置* :匹配前⾯的字符零次或多次。
nginx中rewrite方法
![nginx中rewrite方法](https://img.taocdn.com/s3/m/5ca773a45ff7ba0d4a7302768e9951e79b89692e.png)
nginx中rewrite方法一、引言在Web服务器和反向代理服务器中,Nginx拥有高性能和丰富的功能,成为了许多开发者和运维人员的首选。
本文将详细介绍Nginx中的rewrite方法,帮助大家更好地掌握这一强大的技术。
二、Nginx简介ginx是一款高性能的HTTP服务器,由俄罗斯程序员Igor Sysoev开发。
它具有高性能、稳定性、可扩展性等特点,支持多种编程语言编写,广泛应用于Web服务器和反向代理服务器等领域。
三、Nginx中的rewrite方法1.rewrite指令在Nginx配置文件中,可以使用rewrite指令来实现URL重写。
rewrite 指令的基本语法如下:```rewrite URL_pattern target_url;```其中,URL_pattern表示待重写的原始URL,target_url表示重写后的目标URL。
2.rewrite规则ginx支持两种rewrite规则:正则表达式和普通表达式。
正则表达式:使用`~`符号表示匹配,如:`~^/old_url/(.*)$ `普通表达式:使用`^`、`$`、`(.*)`等符号表示匹配,如:`^/old_url/(.*)$ `3.常用rewrite场景(1)重写URL:将长URL转换为短URL,提高网站美观度和用户体验。
(2)实现301重定向:当网站更换域名或目录时,使用301重定向将用户引导至新地址,提高搜索引擎友好度。
(3)限制请求频率:通过rewrite指令实现访问频率限制,防止恶意攻击和刷屏。
四、实战案例1.重写URL以下配置将长URL重写为短URL:```location /old_url/ {rewrite /old_url/(.*) /new_url/$1;}```2.实现301重定向以下配置实现网站目录跳转:```server {server_name old_;root /var/www/old_domain;rewrite ^/old_directory/(.*) http://new_/$1;redirect 301 /old_directory/ http://new_/;}```3.限制请求频率以下配置限制每分钟最多请求50次:```limit_req_zone $binary_remote_addr zone=mylimit:10mrate=50r/min;location / {if ($binary_remote_addr ~* "mylimit") {return 429 T oo Many Requests;}proxy_pass http://backend;}```五、总结与拓展本文详细介绍了Nginx中的rewrite方法,包括rewrite指令、rewrite规则和常用实战案例。
Nginx的rewrite模块详解
![Nginx的rewrite模块详解](https://img.taocdn.com/s3/m/07a2c4374a35eefdc8d376eeaeaad1f3469311d4.png)
Nginx的rewrite模块详解rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块。
rewrite模块会根据PCRE 正则匹配重写URI,然后发起内部跳转再匹配location,或者直接做30x重定向返回客户端。
指令执⾏顺序⾸先顺序执⾏server块中的rewrite模块指令,得到rewrite后的请求URI然后循环执⾏如下指令如果没有遇到中断循环标志,此循环最多执⾏10次,但是我们可以使⽤break指令来中断rewrite后的新⼀轮的循环(1). 依据rewrite后的请求URI,匹配定义的 location 块(2). 顺序执⾏匹配到的 location 中的rewrite模块指令指令breakContext: server, location, if停⽌执⾏ ngx_http_rewrite_module 的指令集,但是其他模块指令是不受影响的例⼦说明server {listen 8080;# 此处 break 会停⽌执⾏ server 块的 return 指令(return 指令属于rewrite模块)# 如果把它注释掉则所有请求进来都返回 okbreak;return 200 "ok";location = /testbreak {break;return 200 $request_uri;proxy_pass http://127.0.0.1:8080/other;}location / {return 200 $request_uri;}}# 发送请求如下# curl 127.0.0.1:8080/testbreak# /other# 可以看到返回 `/other` ⽽不是 `/testbreak`,说明 `proxy_pass` 指令还是被执⾏了# 也就是说其他模块的指令是不会被 break 中断执⾏的# (proxy_pass是ngx_http_proxy_module的指令)ifContext: server, location依据指定的条件决定是否执⾏ if 块语句中的内容if 中的⼏种判断条件1.⼀个变量名,如果变量 $variable 的值为空字符串或者字符串"0",则为false2.变量与⼀个字符串的⽐较相等为(=) 不相等为(!=) 注意此处不要把相等当做赋值语句啊3.变量与⼀个正则表达式的模式匹配操作符可以是(~ 区分⼤⼩写的正则匹配, ~不区分⼤⼩写的正则匹配, !!,前⾯两者的⾮)4.检测⽂件是否存在使⽤ -f(存在) 和 !-f(不存在)5.检测路径是否存在使⽤ -d(存在) 和 !-d(不存在) 后⾯判断可以是字符串也可是变量6.检测⽂件、路径、或者链接⽂件是否存在使⽤ -e(存在) 和 !-e(不存在) 后⾯判断可以是字符串也可是变量7.检测⽂件是否为可执⾏⽂件使⽤ -x(可执⾏) 和 !-x(不可执⾏) 后⾯判断可以是字符串也可是变量注意上⾯第1,2,3条被判断的必须是变量, 4, 5, 6, 7则可以是变量也可是字符串, -f/-d/-e/-x 基本⽤法和 bash 是⼀致的. set $variable "0";if ($variable) {# 不会执⾏,因为 "0" 为 falsebreak;}# 使⽤变量与正则表达式匹配没有问题if ( $http_host ~ "^star\.igrow\.cn$" ) {break;}# 字符串与正则表达式匹配报错if ( "star" ~ "^star\.igrow\.cn$" ) {break;}# 检查⽂件类的字符串与变量均可if ( !-f "/data.log" ) {break;}if ( !-f $filename ) {break;}returnContext: server, location, ifreturn code [text];return code URL;return URL;停⽌处理并将指定的code码返回给客户端。
nginx rewrite 用法
![nginx rewrite 用法](https://img.taocdn.com/s3/m/4b0f223c78563c1ec5da50e2524de518964bd3ba.png)
nginx rewrite 用法nginx 的 rewrite 模块可以用来实现重写 URL,即修改客户端请求的 URL,让请求更有效,更可读。
下面介绍一下 nginx rewrite 的用法:1. 普通重写普通重写使用 rewrite 指令,语法为:```rewrite regex URL [flag];```其中,regex 是一个正则表达式,URL 是重写后的 URL,flag 是可选参数,用来修改重写行为。
例如,将 /foo 所有请求都重写到 /bar:```rewrite ^/foo(.*) /bar1;```在这里,^/foo(.*) 是正则表达式,表示匹配以 /foo 开头的字符串,(.*) 是一个捕获组,表示匹配的其余字串。
1 是替换串,1 表示第一个捕获组的内容,即 (.*) 匹配的内容。
2. 重定向重定向是指将浏览器的请求重定向到指定的 URL,常用于网站改版、更改域名等情况。
重定向使用 rewrite 指令和 return 指令,语法为:```# 301 Moved Permanentlyrewrite regex URL permanent;# 302 Foundrewrite regex URL redirect;return code URL;```其中,regex 和 URL 的含义同普通重写。
permanent 表示重定向为永久重定向,浏览器会更新其缓存和书签,redirect 表示重定向为临时重定向。
例如,将所有以 .example 访问的请求重定向到http://example:```server {listen 80;server_name .example;rewrite ^(.*) http://example1 permanent;}```3. 反向代理反向代理是指将客户端的请求转发到后端的 Web 服务器,常用于负载均衡、SSL 加速等情况。
反向代理使用 proxy_pass 指令,语法为:```location / {proxy_pass http://backend;}```其中,/ 是匹配的 URL 地址,http://backend 是后端服务器的地址。
nginx的rewrite指令
![nginx的rewrite指令](https://img.taocdn.com/s3/m/1d82e599690203d8ce2f0066f5335a8102d26624.png)
nginx的rewrite指令需求:我们在接收到⼀个/api/upload 开头的url的时候要转发到另外⼀个地址。
但是⼜不想追加/api/upload 只想追加/upload 地址。
Nginx提供了rewrite指令,⽤于对地址进⾏重写,语法规则:rewrite "⽤来匹配路径的正则" 重写后的路径 [指令];我们的案例:server {listen 80;server_name ;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 上传路径的映射location /api/upload {proxy_pass http://127.0.0.1:8082;proxy_connect_timeout 600;proxy_read_timeout 600;rewrite "^/api/(.*)$" /$1 break;}location / {proxy_pass http://127.0.0.1:10010;proxy_connect_timeout 600;proxy_read_timeout 600;}}⾸先,我们映射路径是/api/upload,⽽下⾯⼀个映射路径是 / ,根据最长路径匹配原则,/api/upload优先级更⾼。
也就是说,凡是以/api/upload开头的路径,都会被第⼀个配置处理proxy_pass:反向代理,这次我们代理到8082端⼝,也就是upload-service服务rewrite "^/api/(.*)$" /$1 break,路径重写:"^/api/(.*)$":匹配路径的正则表达式,⽤了分组语法,把/api/以后的所有部分当做1组/$1:重写的⽬标路径,这⾥⽤$1引⽤前⾯正则表达式匹配到的分组(组编号从1开始),即/api/后⾯的所有。
nginx rewrite 写法
![nginx rewrite 写法](https://img.taocdn.com/s3/m/57b868c5d5d8d15abe23482fb4daa58da1111c51.png)
nginx rewrite 写法标题:深入理解与实践Nginx Rewrite规则Nginx是一款高性能的HTTP和反向代理服务器,其强大的Rewrite模块使得我们可以对URL进行灵活的重写和路由。
本文将以“Nginx Rewrite 写法”为主题,详细解析其规则和应用步骤。
一、Nginx Rewrite基础Rewrite模块是Nginx中一个非常重要的功能,它主要用于实现URL的重写和跳转。
在Nginx的配置文件中,我们可以通过location块来定义Rewrite规则。
基本的Rewrite规则语法如下:rewrite <regex> <replacement> <flag>;其中,- `<regex>`:正则表达式,用于匹配要重写的URL部分。
- `<replacement>`:替换字符串,当正则表达式匹配时,将使用此字符串替换原始URL。
- `<flag>`:可选的标志位,用于控制重写的行为。
二、Nginx Rewrite规则实例以下是一些常见的Nginx Rewrite规则实例:1. 将所有以".html"结尾的请求重写为"/index.php":rewrite ^/(.*)\.html /index.php last;在这个例子中,`^/(.*)\.html`是一个正则表达式,匹配所有以".html"结尾的URL。
`/index.php`是替换字符串,将匹配到的URL替换为"/index.php"。
`last`标志表示这是最后一个重写规则,如果这个规则匹配,那么后续的重写规则将不再执行。
2. 将所有的请求重定向到HTTPS:rewrite ^ permanent;在这个例子中,`^`是一个通配符,匹配所有的URL。
`三、Nginx Rewrite标志位Nginx Rewrite模块提供了多种标志位来控制重写的行为,以下是一些常用的标志位:- `last`:停止处理当前location中的后续rewrite指令,并继续处理其他location。
NginxURL重写(rewrite)配置及信息详解
![NginxURL重写(rewrite)配置及信息详解](https://img.taocdn.com/s3/m/5da87b27f011f18583d049649b6648d7c1c70870.png)
NginxURL重写(rewrite)配置及信息详解Nginx URL重写(rewrite)配置及信息详解URL重写有利于⽹站⾸选域的确定,对于同⼀资源页⾯多条路径的301重定向有助于URL权重的集中Nginx URL重写(rewrite)介绍和apache等web服务软件⼀样,rewrite的组要功能是实现RUL地址的重定向。
Nginx的rewrite功能需要PCRE软件的⽀持,即通过perl兼容正则表达式语句进⾏规则匹配的。
默认参数编译nginx就会⽀持rewrite的模块,但是也必须要PCRE的⽀持rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
rewrite语法格式及参数语法说明如下:rewrite <regex> <replacement> [flag];关键字正则替代内容 flag标记关键字:其中关键字error_log不能改变正则:perl兼容正则表达式语句进⾏规则匹配替代内容:将正则匹配的内容替换成replacementflag标记:rewrite⽀持的flag标记flag标记说明:last #本条规则匹配完成后,继续向下匹配新的location URI规则break #本条规则匹配完成即终⽌,不再匹配后⾯的任何规则redirect #返回302临时重定向,浏览器地址会显⽰跳转后的URL地址permanent #返回301永久重定向,浏览器地址栏会显⽰跳转后的URL地址rewrite参数的标签段位置:server,location,if例⼦:说明:rewrite为固定关键字,表⽰开始进⾏rewrite匹配规则regex部分是 ^/(.*) ,这是⼀个正则表达式,匹配完整的域名和后⾯的路径地址regex 常⽤正则表达式说明字符描述\将后⾯接着的字符标记为⼀个特殊字符或⼀个原义字符或⼀个向后引⽤。
nginx 伪静态 重定向 包括域名、目录、文件等方法
![nginx 伪静态 重定向 包括域名、目录、文件等方法](https://img.taocdn.com/s3/m/9681018cbceb19e8b8f6ba64.png)
在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。
如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个404错误信息页面,访问流量白白丧失。
不仅如此,之前该页面的一切积累(比如PR值)就都白费了。
301重定向不仅能使页面实现自动跳转,对于搜索引擎来说,也可能可以传递PR值1、将多个域名指向同一web目录:server_name ;rewrite ^/$ / redirect;2、将不带www的域名301转向到带www的域名:server_name ;if ( $host != "" ) {rewrite ^/(.*)$ /$1 permanent;}nginx重定向规则详细介绍rewrite命令nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:rewrite 正则表达式替换目标flag标记flag标记可以用以下几种格式:last –基本上都用这个Flag。
break –中止Rewirte,不在继续匹配redirect –返回临时重定向的HTTP状态302permanent –返回永久重定向的HTTP状态301例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:location /download/ {rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break;}nginx重定向的IF条件判断在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:正则表达式如:匹配判断~ 为区分大小写匹配; !~为区分大小写不匹配~* 为不区分大小写匹配;!~为不区分大小写不匹配例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /nginx-ie/$1 break;}文件和目录判断-f和!-f判断是否存在文件-d和!-d判断是否存在目录-e和!-e判断是否存在文件或目录-x和!-x判断文件是否可执行例如下面设定nginx在文件和目录不存在的时候重定向:if (!-e $request_filename) {proxy_pass http://127.0.0.1/;}return返回http代码,例如设置nginx防盗链:location ~* \.(gif|jpg|png|swf|flv)$ {valid_referers none blocked / /;if ($invalid_referer) {return 404;}}set设置nginx变量301重定向方法进行了301重定向,把和合并,并把之前的域名也一并合并. 有两种实现方法,第一种方法是判断nginx核心变量host(老版本是http_host):server {server_name ;if ($host != ') {rewrite ^/(.*)$ /$1 permanent;}...}第二种方法:server {server_name ;rewrite ^/(.*) /$1 permanent;}测试了第一种方法ok,这两种方法中,permanent是关键,详细说明见nginx重定向规则说明。
nginx 重定向二级路径
![nginx 重定向二级路径](https://img.taocdn.com/s3/m/f49dba2c571252d380eb6294dd88d0d233d43ceb.png)
在 Nginx 中,重定向二级路径可以通过多种方式实现,其中一种常用的方法是使用 rewrite 指令。
下面是一个示例配置,演示了如何将二级路径重定向到另一个路径:
nginx
server {
listen 80;
server_name example;
location / {
# 这里是其他的配置...
}
location /oldpath/ {
rewrite ^/oldpath/(.*)$ /newpath/$1 last;
}
}
在上面的配置中,当用户访问 example/oldpath/somepage 时,Nginx 会将其重定向到example/newpath/somepage。
rewrite 指令使用正则表达式来匹配 URL,然后将匹配的部分替换为新的路径。
在这个例子中,^/oldpath/(.*)$ 匹配以 /oldpath/ 开头的 URL,并将其替换为 /newpath/$1,其中 $1 是正则表达式中括号内匹配的部分。
注意,last 标志表示完成当前的重写规则后,立即搜索相应的 URI 来继续处理请求。
这样可以确保重定向生效。
请根据你的实际需求修改上述配置中的域名、旧路径和新路径。
确保将配置放置在正确的server 块中,并根据你的 Nginx 安装和配置进行适当的调整。
nginx rewrite写法
![nginx rewrite写法](https://img.taocdn.com/s3/m/bd272e2349d7c1c708a1284ac850ad02de8007d8.png)
nginx rewrite写法
Nginx的rewrite规则可以写在nginx配置文件中的location{}中,基于pcre库匹配,会牵涉到一些基本的nginx匹配规则。
一般来说,nginx的rewrite规则包括目标URL和重写指令。
例如:
bash复制代码
rewrite ^/(.*)$ /index.php?q=$1 last;
这个规则表示,如果请求的URL以“/”开头,那么将其重写为“/index.php?q=URL”。
其中,“$1”表示匹配到的URL路径,“last”表示完成rewrite后跳转到新的URL。
在nginx中,还有其他的重写指令,例如:
•break:终止匹配,不再匹配后面的规则。
•redirect:返回302临时重定向地址栏会显示跳转后的地址。
•permanent:返回301永久重定向地址栏会显示跳转后的地址。
此外,还有一些常用的正则表达式元字符,例如:
•.:匹配除换行符以外的任意字符。
•:在正则里面容易让人困惑的是\转义特殊字符。
总的来说,nginx的rewrite规则可以实现URL的重写、重定向和参数提取等操作,从而提供更好的Web性能和用户体验。
Nginx服务器Rewrite重写规则大全
![Nginx服务器Rewrite重写规则大全](https://img.taocdn.com/s3/m/e869a26f1eb91a37f1115c2b.png)
Nginx服务器Rewrite重写规则大全Nginx Rewrite规则相关指令Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。
一个简单的Nginx Rewrite规则语法如下:rewrite ^/b/(.*)\.html /play.php?video=$1 break;如果加上if语句,示例如下:if (!-f $request_filename){rewrite ^/img/(.*)$ /site/$host/images/$1 last;}Nginx与Apache的Rewrite规则实例对比简单的Nginx和Apache 重写规则区别不大,基本上能够完全兼容。
例如:Apache Rewrite 规则:RewriteRule ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 [L]RewriteRule ^/ceshi/$ /zl/ceshi.php [L]RewriteRule ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 [L]RewriteRule ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 [L]Nginx Rewrite 规则:rewrite ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 last;rewrite ^/ceshi/$ /zl/ceshi.php last;rewrite ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 last;rewrite ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 last;由以上示例可以看出,Apache的Rewrite规则改为Nginx的Rewrite规则,其实很简单:Apache 的RewriteRule指令换成Nginx的rewrite指令,Apache的[L]标记换成Nginx的last标记,中间的内容不变。
nginx中rewrite方法
![nginx中rewrite方法](https://img.taocdn.com/s3/m/52f9b26a0166f5335a8102d276a20029bd646337.png)
nginx中rewrite方法摘要:1.Nginx简介2.Nginx中的rewrite方法概述3.使用rewrite方法的实战案例4.rewrite方法的配置详解5.rewrite方法的优缺点6.总结正文:【1.Nginx简介】ginx是一款高性能的反向代理服务器,广泛应用于网站后端服务器、负载均衡和动静分离等场景。
它具有高性能、稳定性强、占用资源少等特点,深受开发者喜爱。
【2.Nginx中的rewrite方法概述】ginx的rewrite方法是其内置的URL重写功能,通过正则表达式对请求的URL进行匹配和替换,实现URL路由、动态域名解析等目的。
rewrite方法的主要作用是对请求的URL进行转换,使之符合我们期望的格式。
【3.使用rewrite方法的实战案例】案例1:将不同格式的URL统一为规范格式```location /old-url/ {rewrite ^/old-url/(.*)$ /new-url/$1;}```案例2:实现动态域名解析(使用PCRE)```location /~^www.(.*)$ {server_name www.$1;}```【4.rewrite方法的配置详解】1.语法:`rewrite ^pattern new_pattern;`2.常用正则表达式:- `^`:表示匹配字符串的开头- `$`:表示匹配字符串的结尾- `*`:表示任意字符,匹配0个或多个字符- `?`:表示匹配一个字符- `[]`:表示匹配指定范围内的字符- `|`:表示或,匹配两个正则表达式之一- `^`、`$`、`*`、`?`、`[]`等符号可以互相组合【5.rewrite方法的优缺点】优点:1.性能高,占用资源少,适用于高性能场景2.规则简单,易于配置和维护3.支持正则表达式,功能强大缺点:1.学习成本较高,需要掌握正则表达式2.配置稍显复杂,不易上手【6.总结】ginx的rewrite方法为网站开发者提供了强大的URL重写功能,通过简单的配置,可以实现URL路由、动态域名解析等功能。
nginx中rewrite的用法 -回复
![nginx中rewrite的用法 -回复](https://img.taocdn.com/s3/m/9d3da7dd50e79b89680203d8ce2f0066f53364de.png)
nginx中rewrite的用法-回复nginx中的rewrite指令用于修改URL,重定向请求和转发请求,并且它是一个非常强大和灵活的工具。
在这篇文章中,我们将详细讨论nginx中rewrite的用法,并一步一步回答关于这个主题的问题。
第一步:了解rewrite指令的语法和选项在nginx中,rewrite指令的语法如下:rewrite regex replacement [flag];其中,regex是一个正则表达式,用于匹配需要重写的URL。
replacement 是一个替换字符串,用于替换匹配到的URL。
flag是一个可选的修饰符,用于控制重写规则的行为。
常见的flag选项包括:- last:表示完成这条重写规则后,停止重写过程,将URL交给下一个location块进行处理。
- break:表示完成这条重写规则后,停止重写过程,立即重新启动URI 到当前所在的location块。
- redirect:表示返回302重定向响应,并将URL重定向到新的位置。
- permanent:表示返回301永久重定向响应,并将URL永久重定向到新的位置。
在rewrite指令中,regex和replacement之间的关系非常重要。
例如,通过以下规则将所有的/index.html页面重定向到/new/index.html页面:rewrite ^/index.html /new/index.html last;在这个例子中,^/index.html是一个正则表达式,匹配到了所有的/index.html页面。
将其替换为/new/index.html会将请求重定向到新的位置。
第二步:了解rewrite规则的匹配过程rewrite规则的匹配过程是按照location块的顺序进行的。
当nginx接收到一个请求时,它会按照配置文件中的location块顺序对请求的URI进行匹配,然后在匹配成功的location块内执行rewrite规则。
nginx rewrite写法 -回复
![nginx rewrite写法 -回复](https://img.taocdn.com/s3/m/aa4d161476232f60ddccda38376baf1ffc4fe33b.png)
nginx rewrite写法-回复Nginx是一种开源的高性能Web服务器和反向代理服务器,广泛用于构建高可靠性、高性能的Web应用程序和网站。
其中非常重要的一个功能是rewrite(重写),通过修改URL的方式,实现URL重定向、路径修改以及处理网站SEO等目的。
本文将详细讲解nginx rewrite的写法,逐步回答读者的问题。
首先,我们需要了解nginx rewrite的配置语法。
在nginx的配置文件(一般位于/etc/nginx/nginx.conf)中,可以通过在server或location块内添加rewrite指令来完成URL的重写操作。
基本语法如下:rewrite regex replacement [flag];其中,regex是一个正则表达式,用于匹配需要重写的URL;replacement 是替换的内容,可以是一个固定的字符串,也可以使用正则表达式的捕获组;flag是一个可选参数,用于标识重写规则的行为。
接下来,我们将以常见的应用场景为例,逐步回答读者关于nginx rewrite 的问题。
问题1:如何实现URL重定向?解答:URL重定向是指将一个URL请求重定向到另一个URL。
在nginx 中,可以通过添加rewrite指令实现。
详细步骤如下:1. 打开nginx配置文件,找到需要做重定向的server或location块;2. 在该块内添加rewrite指令,指定匹配的URL和替换的URL;3. 保存配置文件并重新加载nginx配置。
例如,假设我们需要将所有访问server {listen 80;server_name example;location / {rewrite ^(.*) permanent;}}在以上配置中,使用了正则表达式(.*)匹配所有URL,并通过1将其替换为问题2:如何修改URL路径?解答:有时候我们需要修改URL的路径,例如将旧有的URL/blog/post/123 修改为新的URL /news/post/123。
Nginx进行域名重写和泛域名解析配置的方法
![Nginx进行域名重写和泛域名解析配置的方法](https://img.taocdn.com/s3/m/87945103cd7931b765ce0508763231126edb77ae.png)
Nginx进⾏域名重写和泛域名解析配置的⽅法本⽂介绍了Nginx进⾏域名重写和泛域名解析配置的⽅法,分享给⼤家,具体如下:#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;#设置允许发布内容为8Mclient_max_body_size 20M;client_body_buffer_size 512k;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;server {listen 80;server_name ;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}server {listen 80;server_name ;location / {proxy_pass http://127.0.0.1:9989;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}#泛域名解析server {listen 80;server_name *;location / {# 泛域名开始配置if ( $host ~* (.*)\.(.*)\.(.*)\.(.*) ) {set $domain $1; #获取当前的域名前缀}proxy_pass http://127.0.0.1:1119/$domain/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Nginx中location匹配以及rewrite重写跳转详解
![Nginx中location匹配以及rewrite重写跳转详解](https://img.taocdn.com/s3/m/3dfc58000a4e767f5acfa1c7aa00b52acfc79c99.png)
Nginx中location匹配以及rewrite重写跳转详解⽬录前⾔⼀、rewrite跳转实现⼆、rewrite执⾏顺序三、rewrite跳转场景四、语法与flg标记说明五、Nginx常⽤的正则表达式符号六、location1.分类2.常⽤匹配规则3.优先级4.⽰例5.匹配规则定义总结:前⾔rewrite功能就是使⽤nginx提供的全局变量或⾃⼰设置的变量,结合正则表达式和标记实现URL重写以及重定向例如:更换域名后需要保持旧的域名能够转到新的域名上、某⽹页发⽣改变需要跳转到新的页⾯、⽹站防盗链等等需求⼀、rewrite跳转实现Nginx:通过ngx_http_rewrite_module模块⽀持URL重写、⽀持if条件判断,但不⽀持else跳转:从⼀个location跳转到另⼀个location,循环最多可以执⾏10次,超过后nginx将返回500错误PCRE⽀持:perl兼容正则表达式的语法规则匹配重写模块set指令:创建新的变量并为其赋值⼆、rewrite执⾏顺序①执⾏server快⾥⾯的rewriter指令②执⾏location匹配③执⾏选定的location中的rewrite指令三、rewrite跳转场景调整⽤户浏览的URL,看起来更规范,合乎开发及产品⼈员的需求为了让搜索引擎搜录⽹站内容及⽤户体验更好,企业会将动态URL地址伪装成静态地址提供服务⽹址换新域名后,让旧的访问跳转到新的域名上;例如,访问京东的 会跳转到 服务端某些业务调整,⽐如根据特殊变量、⽬录、客户端的信息进⾏URL调整等四、语法与flg标记说明语法rewrite <regex> <replacement> [flag];regex:表⽰正则匹配规则replacement:表⽰跳转后的内容flag:表⽰ rewrite ⽀持的 flag 标记flag标记说明:last :本条规则匹配完成后,继续向下匹配新的location URI规则,⼀般⽤在 server 和 if 中break :本条规则匹配完成即终⽌,不再匹配后⾯的任何规则,⼀般使⽤在 location 中redirect :返回302临时重定向,浏览器地址会显⽰跳转后的URL地址permanent :返回301永久重定向,浏览器地址栏会显⽰跳转后的URL地址五、Nginx常⽤的正则表达式符号六、location1.分类location⼤致可以分为以下三类:精准匹配:location = / {…}⼀般匹配:location / {…}正则匹配:location ~ / {…}2.常⽤匹配规则3.优先级⾸先精准匹配 =其次前缀匹配 ^~其次是按⽂件中顺序的正则匹配 ~ 或 ~*然后是匹配不带任何修饰的前缀匹配,即⼀般匹配最后交给 / 通⽤匹配,优先级最低4.⽰例localtion = / {}=为精准匹配 /,主机名后⾯不能带任何字符串,⽐如访问 / 和 /xcf,则 / 匹配,/xcf 不匹配location / {}因为所有的地址都以 / 开头,所以这条规则将匹配到所有的请求,⽐如访问 / 和 /data,则 / 匹配,/data也匹配但若后⾯是正则表达式,则会和最长字符串优先匹配(最长匹配)location /documents/ {}匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 locationlocation /documents/abc {}匹配任何以 /documents/abc 开头的地址,匹配符合后,还要继续往下搜索其他 location只有其他 location 后⾯的正则表达式没有匹配到时,才会采⽤这⼀条location ^~ /images/ {}匹配任何以 /images/ 开头的地址,匹配符合以后,停⽌往下搜索正则,并采⽤这条location ~* .(gif|jpg|jpeg)$ {}匹配所有以 gif、jpg、jpeg 为结尾的请求然⽽,所有请求 /images/ 下的图⽚会被 location ^~ /images/ 处理,因为 ^~ 的优先级更⾼,所以到达不了这⼀条正则location /images/abc {}最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在location ~ /images/abc {}匹配以 /images/abc 开头的,优先级次之,只有去掉 location ^~ /images 才会采⽤这⼀条location /images/abc/1.html {}匹配 /images/abc/1.html ⽂件,如果和正则 ~ /images/abc/1.html 相⽐,正则优先级更⾼优先级总结:(location = 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (location /)5.匹配规则定义①第⼀个必选规则:直接匹配⽹站根,通过域名访问⽹站⾸页⽐较频繁,使⽤这个会加速处理,⽐如说官⽹可以是⼀个静态⾸页,也可以直接转发给后端“应⽤服务器”——>PHP、Apache(应⽤服务器如下图所⽰)location / {roothtml;indexindex.html index.html;}②第⼆个必选规则:处理静态⽂件请求,这是nginx作为http服务器的强项(①静态请求处理的能⼒②⾼并发处理能⼒③资源消耗较低)有两种配置模式,⽬录匹配或后缀匹配,任选其⼀或搭配使⽤location ^~ /static/ {root /webroot/static/;}location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/ ;}③第三个必选规则:就是通⽤规则,⽐如⽤来转发带.php、.jsp后缀的动态请求到后端应⽤服务器⾮静态⽂件请求就默认是动态请求(跳转/反向代理)upstream tomcat_server {192.168.126.12:80192.168.126.23:80}location / {proxy_ pass http://tomcat_server;总结:1.⽐较rewrite和location相同点:都实现跳转不同点:rewrite是在同⼀域名内更改获取资源的路径location是对⼀类路径做控制访问或反向代理,还可以proxy_pass到其他机器2.rewrite会写在location⾥,执⾏顺序执⾏server块⾥⾯的rewrite指令执⾏location匹配执⾏选定的location中的rewrite指令3.location优先级是怎么排列的?匹配某个具体⽂件(location = 完整路径) > (location ^~ 完整路径) > (location ~* 完整路径) > (location ~ 完整路径)> (location /)⽤⽬录做匹配访问某个⽂件(location = ⽬录) > (location ^~ ⽬录) > (location ~ ⽬录) > (location ~* ⽬录)> (location /)4.⽂件、⽬录为什么只会在区不区分⼤⼩写上会有变动正则表达式:⽬的是为了尽量精确的匹配⽂件——>尽量精确匹配,区分⼤⼩写精确,不区分更为精确⽬录——>尽量精确匹配,区分⼤⼩写更为精确,优先级更⾼到此这篇关于Nginx中location匹配以及rewrite重写跳转的⽂章就介绍到这了,更多相关Nginx location匹配及rewrite重写内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
原本准备换Linux服务器,所以数据迁移暂时需要使用静态页面临时代替一下,之前的article.asp?id=xxx都要重定向到静态文件 article/xxx.htm,nginx 的rewrite比apache的强大很多,还可以用if语句,很容易理解,下面看看Nginx是如何进行 Rewrite的!
提示:以下rewrite指令写在 nginx.conf 配置的 server { ... } 中
最常见的:静态地址重定向到带参数的动态地址
view plaincopy to clipboardprint?
rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent;
反过来:带参数的动态地址重定向到静态地址
view plaincopy to clipboardprint?
if ($query_string ~* id=(.*)) {
set $id $1;
rewrite "^(.*)/article.asp$" $1/article/$id.htm last;
}
泛域名解析
view plaincopy to clipboardprint?
server_name *;
server_name_in_redirect off;
#设置默认root
set $rootdir /usr/local/nginx/html/w3cgroup/;
#匹配三级域名
if ($host ~* ^([^\.] )\.([^\.] )\.([^\.] )\.([^\.] )$) {
set $rootdir /usr/local/nginx/html/w3cgroup/$2/$1;
#三级域名中有访问指定的目录则重定向到相应的二级域名下
rewrite "^. upload/?(.*)$" /$1 permanent; rewrite "^. ijc/?(.*)$" /$1 permanent;
break;
}
#匹配二级域名
if ($host ~* ^([^\.] )\.([^\.] )\.([^\.] )$) {
set $rs1 $1;
}
#设置www时root
if ($rs1 ~* ^www$) {
set $rootdir /usr/local/nginx/html/platform_ig/;
#二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用last
rewrite "^. upload/?(.*)$" upload/$1 last;
rewrite "^. ijc/?(.*)$" ijc/$1 last;
break;
}
#设置非www二级域名时root
if ($rs1 !~* ^www$) {
set $rootdir /usr/local/nginx/html/w3cgroup/$rs1;
#二级域名中有访问指定的目录则重定向到相应的二级域名下
rewrite "^. upload/?(.*)$" /$1 permanent; rewrite "^. ijc/?(.*)$" /$1 permanent;
break;
}
#应用root
root $rootdir;
index index.php index.html;
error_page 404 http://$host/;
注意:if () {} 之间需要空格,否则Nginx.conf会报unknow directive 错误! 参考:
Nginx Rewrite Flags
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向
* permanent 返回301永久重定向
Nginx正则表达式匹配
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
Nginx文件及目录匹配
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
Nginx全局变量
view plaincopy to clipboardprint?
$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
参考:
/dh20156/article.asp?id=263
/NginxHttpRewriteModule /blog/?p=240。