`
heartnn
  • 浏览: 35112 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
文章分类
社区版块
存档分类
最新评论

Nginx的Rewrite设置及示例

阅读更多
作者:顺子(shunz)

Nginx以其良好的并发性能,目前正在逐渐取代Apache成为大家的Web Server首选,但是Nginx目前的中文资料很少,需要大家努力贡献。
下面介绍一下Nginx的Rewrite模块设置及Wordpress和Discuz的示例。Nginx的Rewrite规则比Apache的简单灵活多了,从下面介绍可见一斑。
首先,Nginx可以用if进行条件匹配,语法规则类似C,举例如下:

if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}

1、正则表达式匹配,其中:
~为区分大小写匹配;
~*为不区分大小写匹配;
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配。
2、文件及目录匹配,其中:
-f和!-f用来判断是否存在文件;
-d和!-d用来判断是否存在目录;
-e和!-e用来判断是否存在文件或目录;
-x和!-x用来判断文件是否可执行。
如:

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

其次,Nginx的Rewrite规则与Apache几乎完全一致,所不同的是最后的flag标记,举例如下:
rewrite ^/feed/$http://feed.shunz.netlast;

flag标记有:
last 相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则;
break 与last类似;
redirect 返回302临时重定向;
permanent 返回301永久重定向。

Wordpress的重定向规则:

if (!-e $request_filename) {
rewrite ^/(index|atom|rsd).xml$ http:feed.shunz.net last;
rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
rewrite ^([_0-9a-zA-Z-]+)?(/.*.php)$ $2 last;
rewrite ^ /index.php last;
}

Discuz!的重定向规则:

if (!-f $request_filename) {
rewrite ^/archiver/((fid|tid)-[w-]+.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+).html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+).html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+).html$ /tag.php?name=$1 last;
}
分享到:
评论

相关推荐

    nginx rewrite常用示例

    ### Nginx Rewrite 常用示例解析 #### 一、从非-www 版本自动重定向到 www 版本 **应用场景:** 当用户访问 `abc.com`(无 www 的版本)时,需要自动重定向到 `http://www.abc.com`。 **配置示例:** ```nginx ...

    实例讲解nginx的rewrite规则

    Nginx还提供了对文件及目录存在的判断能力,这些判断可以用在`rewrite`指令之前,以确定是否需要进行重写操作: 1. **文件存在**:使用`-f`和`!-f`判断文件是否存在,例如: - `if (!-f $request_filename) { ...

    详解nginx rewrite和根据url参数location

    **Nginx Rewrite 规则详解** `Nginx` 的 `rewrite` 模块用于重写请求的 URI,这在处理动态路由、URL美化、重定向等方面非常有用。`rewrite` 规则通常在 `location` 块内定义,以针对特定的 URL 路径执行。 1. **...

    Nginx Rewrite使用场景及代码案例详解

    使用正则表达式进行URL重写可以更加灵活地控制rewrite规则,比如示例中的`http`转`https`不需要再显式添加`ssl`参数,Nginx版本更新后简化了配置。 在配置文件中,可以通过`return`指令直接返回重定向的状态码和URL...

    nginx脚本引擎与rewrite设计原理(二)

    ### Nginx脚本引擎与Rewrite设计原理深入解析 #### 一、Set语句的解析与处理 在深入探讨Nginx脚本引擎与Rewrite设计原理时,我们聚焦于`set`与`rewrite`指令的处理机制,这两者在Nginx的配置文件中极为常见,尤其...

    nginx rewrite 实现URL跳转的方法

    Rewrite模块是Nginx提供的一个强大功能,它可以在服务器内部将用户请求的URL按照指定规则进行重写和跳转,达到修改用户访问URL的目的。在配置Nginx时,掌握如何使用Rewrite规则对于实现复杂的URL重写和优化网站的SEO...

    浅谈apache和nginx的rewrite的区别

    1. Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下: rewrite ^/b/(.*)\.html /play.php?video=$1 ...

    nginx脚本引擎与rewrite设计原理(一)

    为了更直观地理解Nginx脚本引擎与rewrite的交互,我们分析一个具体的rewrite配置示例: ```nginx location / { if ($uri ~* "(.*).html$") { set $file $1; rewrite ^(.*)$ http://$http_host$file.mp4 break; ...

    WordPress与Drupal的Nginx配置rewrite重写规则示例

    以下是一个基本的WordPress Nginx配置示例: ```nginx server { listen 80; server_name www.example.com example.com; access_log /var/log/nginx/example.com.access.log; index index.php; root /var/...

    nginx部署多个vue项目的方法示例

    我们将通过一个具体的示例来展示配置过程。 首先,我们的目标是在同一个域名下部署两个Vue项目,分别对应于`/login`和`/student/login`两个路径。这两个项目应并列存储在同一个文件夹内。 **Vue项目配置** 对于二...

    Nginx服务器下使用rewrite重写url以实现伪静态的示例

    下面我们将详细介绍Nginx中使用rewrite模块重写URL的示例,以及如何为Discuz!和WordPress这样的PHP程序实现伪静态。 首先,我们来讨论一下Nginx和Apache的rewrite规则的差异。对于熟悉Apache服务器重写规则的用户来...

    Nginx下支持Thinkphp URL Rewrite的配置示例

    在Nginx中启用ThinkPHP的URL Rewrite功能,主要是通过`location`块中的`rewrite`指令来完成。下面是一个示例配置: ```nginx server { listen 80 default_server; server_name www.example.com; root /var/...

    微信小程序https服务nginx配置示例.pdf

    2. nginx配置示例:nginx是一个高性能的HTTP和反向代理服务器。在微信小程序中,通常将nginx作为服务器后端,负责接收客户端请求,并将请求转发给相应的服务端应用。 3. https服务配置:配置https服务涉及到nginx...

    nginx面试题.txt(内容较少,酌情下载)

    ### 从 Apache 到 Nginx 的 Rewrite 规则转换示例 在给定的文件中,提到了如何将 Apache 的 Rewrite 规则转换为 Nginx 的 rewrite 规则。 #### 示例 1: 将域名 `nginx.org` 重写为 `www.nginx.org` **Apache 原始...

    Nginx Rewrite使用场景及配置方法解析

    **Nginx Rewrite 使用场景及配置方法解析** Nginx 的 Rewrite 模块是一个强大的 URL 重写工具,它允许你根据预定义的规则来改变请求的 URI,从而实现多种功能,包括 URL 跳转、伪静态处理、SEO 优化等。下面我们将...

    Nginx详解及反向代理设置

    Nginx 详解及反向代理设置 Nginx 是一个功能强大且高性能的 Web 服务器软件,广泛应用于 Web 服务器、反向代理、负载均衡等领域。下面对 Nginx 进行详细的介绍,包括 Linux 和 Windows 下的安装方法、nginx.conf ...

    实战Nginx.取代Apache的高性能Web服务器

    3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 .3.5 Nginx的自动列目录配置 3.6 Nginx的浏览器本地缓存设置 第4章 Nginx与PHP(FastCGI)的安装...

Global site tag (gtag.js) - Google Analytics