技术知识库

帮助中心 >  产品文档 >  云服务器 >  Nginx配置文件Rewrite语法

Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用(当然并不是说不改动任何东西就拿来使用)。

  比如在Apache中这样写规则rewrite^/([0-9]{5}).html$/viewthread.php?tid=$1last;而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号:rewrite“^/([0-9]{5}).html$”/viewthread.php?tid=$1last;一般来说,nginx的rewrite规则可以写在nginx配置文件中的location{}中,也可以针对特定的目录进行location\demo{},这个实例就是针对服务器根目录下的demo目录的rewrite规则配置等等;

  nginx的rewrite重写是基于pcre库匹配的,所以会牵涉到一些基本的nginx匹配规则:

nginxrewrite正则表达式匹配

大小写匹配

~为区分大小写匹配

~*为不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

flag标记

last相当于Apache里的[L]标记,表示完成rewrite

break终止匹配,不再匹配后面的规则。

redirect返回302临时重定向地址栏会显示跳转后的地址。

permanent返回301永久重定向地址栏会显示跳转后的地址。

一些可用的全局变量

可以用在rewrite时的条件判断

$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


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: