当前位置: 首页 > news >正文

邮箱类网站模板2345网址导航浏览器

邮箱类网站模板,2345网址导航浏览器,软件开发外包网站,php开发网站项目心得文章目录 1. 概述2. Rewrite 指令 2.1 指令语法2.2 Flag 标记说明 3. Rewrite 与 Location 3.1 Location 分类3.2 Rewrite 和 Location 比较 4. Rewrite 实际场景 4.1 基于域名的跳转4.2 基于客户端 IP 访问跳转4.3 基于参数匹配的跳转4.4 基于目录下所有 PHP 文件跳转4.5 基于…
文章目录
    • 1. 概述
    • 2. Rewrite 指令
      • 2.1 指令语法
      • 2.2 Flag 标记说明
    • 3. Rewrite 与 Location
      • 3.1 Location 分类
      • 3.2 Rewrite 和 Location 比较
    • 4. Rewrite 实际场景
      • 4.1 基于域名的跳转
      • 4.2 基于客户端 IP 访问跳转
      • 4.3 基于参数匹配的跳转
      • 4.4 基于目录下所有 PHP 文件跳转
      • 4.5 基于最普通 URL 请求的跳转
    • 5. Rewrite 执行顺序
    • 6. Rewrite 与 If 指令
    • 7. Rewrite 正则表达式
    • 8. Rewrite 指令的脚本指令
    • 9. Rewrite 配置示例
      • 9.1 301/302 重定向
      • 9.2 非 www 域名重定向到 www 域名
      • 9.3 URL 正则重写:简化 URL 结构
    • 10. 结论

1. 概述

Nginx 的 rewrite 模块是处理 HTTP 请求过程中的一个重要功能,它允许基于 Perl 兼容正则表达式(PCRE)对用户请求的 URI 进行重写,并返回 30x 重定向跳转或按条件执行相关配置。这个模块提供了灵活的 URL 重写和重定向功能,可以用于实现友好 URL、301/302 重定向、条件重写等。

2. Rewrite 指令

2.1 指令语法

Nginx 中的 URL 重写主要依赖于 rewrite 指令,其基本语法如下:

rewrite <regex> <replacement> [flag];
  • regex:用于匹配 URI 的正则表达式。

  • replacement:将匹配到的 URI 替换成的新 URI。

  • flag(可选):控制重写的行为,常见的标志有:

    • last:表示重新搜索新的 location 块(即继续匹配新的规则)。
    • break:停止当前 location 块中的规则匹配,执行后续指令。
    • redirect:执行临时 重定向(302)。
    • permanent:执行永久重定向(301)。
2.2 Flag 标记说明
  • last:重写请求并继续搜索 location 匹配。
  • break:重写请求并停止搜索 location 匹配。
  • redirect:返回 302 临时重定向。
  • permanent:返回 301 永久重定向。

3. Rewrite 与 Location

rewrite 指令可以在 serverlocation 块中配置。location 块只对域名后除去传递参数的字符串起作用,而 rewrite 可以对域名或参数字符串进行匹配和重写。

3.1 Location 分类
  • 普通 location:匹配特定路径。
  • 正则 location:使用正则表达式匹配路径。
  • 优先级:Nginx 会优先匹配带有正则表达式的 location,然后是最长非正则 location。
3.2 Rewrite 和 Location 比较
  • rewrite 用于重写请求 URI。
  • location 用于定义请求的处理方式。

4. Rewrite 实际场景

4.1 基于域名的跳转

将旧域名的访问重定向到新域名,同时保持参数不变。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 olddomain.comserver_name olddomain.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令将所有请求从 olddomain.com 重定向到 newdomain.com# 并保持原有的请求路径和查询参数不变rewrite ^/(.*)$ http://newdomain.com/$1 permanent;}
}

这段配置的作用是将所有访问 olddomain.com 的请求通过 Nginx 重定向到 newdomain.com,并且保持请求的路径不变。permanent 标志表示这是一个永久重定向(301 状态码),告诉搜索引擎和浏览器该资源已经被永久移动到新的位置。

4.2 基于客户端 IP 访问跳转

只允许特定 IP 访问,其他 IP 重定向到维护页面。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 if 指令进行条件判断,$remote_addr 是客户端的 IP 地址if ($remote_addr != '192.168.1.100') {# 如果客户端 IP 地址不是 '192.168.1.100',则返回 302 状态码# 并将请求重定向到 /maintenance.html,表示网站正在维护中return 302 /maintenance.html;}}
}

这段配置的作用是限制对 example.com 的访问,只允许 IP 地址为 192.168.1.100 的客户端访问所有资源,其他所有 IP 地址的访问都会被重定向到 /maintenance.html 页面,通常用于网站维护期间。这里使用的是临时重定向(302 状态码),意味着浏览器会显示新的 URL(即 /maintenance.html),但搜索引擎和缓存可能会保留原始请求的 URL。

4.3 基于参数匹配的跳转

根据请求参数进行跳转。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)?param=value$ 匹配任何以 / 开头,后面跟着任意字符# 并且以 ?param=value 结尾的请求 URIrewrite ^/(.*)?param=value$ /new-path/$1 last;# last 标志表示重写完成后,继续搜索匹配的 location 块# 这里的 $1 是正则表达式中括号内匹配到的部分,即任意字符的部分}
}

这段配置的作用是将所有匹配特定模式的请求重写到一个新的路径。具体来说,它会查找所有以 / 开头,后面跟着任意内容,并且以 ?param=value 结尾的请求,并将这些请求重写到 /new-path/ 开头的路径下,同时保留原始请求中的路径部分(不包括查询参数)。last 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项。

4.4 基于目录下所有 PHP 文件跳转

将特定目录下的所有 PHP 文件请求重写到新路径。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义一个 location 块,使用 ~ 表示这是一个正则表达式匹配# 正则表达式 .php$ 匹配以 .php 结尾的请求 URIlocation ~ .php$ {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*).php$ 匹配任何以 / 开头,后面跟着任意字符,以 .php 结尾的请求 URIrewrite ^/(.*).php$ /new-path/$1.php last;# last 标志表示重写完成后,继续搜索匹配的 location 块# 这里的 $1 是正则表达式中括号内匹配到的部分,即除去 .php 后缀的文件名部分}
}

这段配置的作用是将所有请求 URI 以 .php 结尾的请求重写到 /new-path/ 下的相同文件名。例如,请求 /example.com/about.php 会被重写为 /example.com/new-path/about.phplast 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项,而不是立即停止处理当前 location 块。

4.5 基于最普通 URL 请求的跳转

将普通 URL 请求重写到新路径。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)$ 匹配任何以 / 开头,后面跟着任意字符的请求 URIrewrite ^/(.*)$ /new-path/$1 permanent;# permanent 标志表示这是一个永久重定向(301 状态码)# 告诉浏览器和搜索引擎该资源已经被永久移动到新的位置# $1 是正则表达式中括号内匹配到的部分,即除去第一个斜杠后的整个请求路径}
}

这段配置的作用是将所有访问 example.com 的请求重定向到 /new-path/ 下的相同路径。例如,请求 /example.com/about 会被永久重定向到 /example.com/new-path/aboutpermanent 标志意味着这是一个永久重定向,浏览器会更新收藏夹中的 URL,搜索引擎也会更新其索引。

5. Rewrite 执行顺序

rewrite 指令的执行顺序如下:

  1. 执行 server 块里面的 rewrite 指令。
  2. 执行 location 匹配。
  3. 执行选定 location 中的 rewrite 指令。

6. Rewrite 与 If 指令

if 指令用于条件判断,可以与 rewrite 结合使用,但需要注意 if 是邪恶的,因为它可能导致 Nginx 配置变得复杂和难以维护。推荐使用 rewrite 来实现条件重写。

7. Rewrite 正则表达式

Nginx 的 rewrite 模块支持 PCRE 正则表达式,以下是一些常用的正则表达式元字符:

  • .:匹配任意单个字符。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • *:匹配前面的元素 0 次或多次。
  • +:匹配前面的元素 1 次或多次。
  • ?:匹配前面的元素 0 次或 1 次。
  • []:匹配括号内的任意一个字符。
  • |:逻辑或操作符。

8. Rewrite 指令的脚本指令

rewrite 模块提供了类似脚本语言的指令,可以在 HTTP 请求处理过程中对 URI 进行更灵活的操作控制。

9. Rewrite 配置示例

以下是一些 rewrite 配置的示例:

9.1 301/302 重定向
# 定义一个 server 块,用于处理 HTTP 请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 olddomain.comserver_name olddomain.com;# 定义 location 块,用于匹配所有请求的 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)$ 匹配所有以 / 开头的请求 URIrewrite ^/(.*)$ http://newdomain.com/$1 permanent;# 将匹配到的请求重写到 newdomain.com 的相同路径# $1 表示正则表达式中括号内匹配到的部分,即除了根斜杠外的路径部分# permanent 标志表示这是一个永久重定向(301 状态码)# 告诉浏览器和搜索引擎该资源已经被永久移动到新域名}
}

这段配置的作用是将所有访问 olddomain.com 的请求永久重定向到 newdomain.com 的相同路径。例如,如果用户访问 olddomain.com/about,他们将被重定向到 newdomain.com/about。这个重定向是永久的,意味着搜索引擎和浏览器会更新相应的链接,并且用户浏览器的地址栏也会显示新的 URL。

9.2 非 www 域名重定向到 www 域名
# 第一个 server 块,用于处理对 example.com 的非 www 前缀域名的请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 example.com(没有 www 前缀)server_name example.com;# 对于所有请求,返回一个 301 永久重定向响应# 这会将用户从 http://example.com 重定向到 http://www.example.com,并保留原始请求的 URIreturn 301 http://www.example.com$request_uri;
}# 第二个 server 块,用于处理对 www.example.com 的请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 www.example.com(带有 www 前缀)server_name www.example.com;# 定义 location 块,用于匹配所有请求的 URI(/ 表示根路径)location / {# 这里可以放置处理 www.example.com 域名请求的配置# 例如,可以配置 proxy_pass 来代理请求,或者 root 指令来指定文件根目录等# 正常站点配置}
}

这段配置的作用是将所有对 example.com(没有 www 前缀)的 HTTP 请求永久重定向到 www.example.com(带有 www 前缀)。第一个 server 块监听 example.com 并返回一个 301 状态码,将请求重定向到 www.example.com,同时保留请求的 URI。第二个 server 块则处理对 www.example.com 的请求,可以在这里进行进一步的配置,比如设置代理、静态文件服务等。

关于您提到的网址 http://www.example.com$request_uri,由于网络原因,解析并没有成功。这可能是由于链接格式不正确或者网络连接问题。请检查网页链接的合法性,并在确保网络连接正常的情况下适当重试。如果问题依旧存在,可能需要进一步的网络诊断或联系网站管理员。如果您有其他问题或需要帮助,请随时告知。

9.3 URL 正则重写:简化 URL 结构
# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义一个 location 块,匹配请求 URI 路径以 /category/id/ 开头的请求location /category/id/ {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/category/id/(d+)$ 匹配以 /category/id/ 开头,接着是数字的请求 URIrewrite ^/category/id/(d+)$ /category/$1 last;# last 标志表示重写完成后,继续搜索匹配的 location 块# $1 是正则表达式中括号内匹配到的部分,即 URI 中的数字部分}
}

这段配置的作用是将所有匹配 /category/id/ 路径并且后面跟着数字的请求重写到 /category/ 路径下。例如,请求 /category/id/123 会被重写为 /category/123last 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项。这样做可以允许 Nginx 在重写请求后,根据新的 URI 再次检查是否有更具体的 location 匹配,从而应用更具体的配置。

10. 结论

Nginx 的 rewrite 模块提供了强大的 URL 重写和重定向功能,可以用于实现各种复杂的 URL 处理需求。通过合理配置 rewrite 指令,可以提高网站的可用性、改善 SEO、实现域名迁移等。本手册详细介绍了 rewrite 的命令、语法、含义、环境和示例,希望能够帮助用户更好地理解和使用 Nginx 的 rewrite 功能。


文章转载自:
http://audiometric.hqbk.cn
http://lamellate.hqbk.cn
http://nidamental.hqbk.cn
http://caftan.hqbk.cn
http://rigmo.hqbk.cn
http://genuflect.hqbk.cn
http://exasperating.hqbk.cn
http://crossrail.hqbk.cn
http://privateersman.hqbk.cn
http://vida.hqbk.cn
http://cuticle.hqbk.cn
http://deportable.hqbk.cn
http://overhear.hqbk.cn
http://bigg.hqbk.cn
http://pregnane.hqbk.cn
http://lalique.hqbk.cn
http://marvel.hqbk.cn
http://sponsion.hqbk.cn
http://inflated.hqbk.cn
http://meteorograph.hqbk.cn
http://eo.hqbk.cn
http://macroetch.hqbk.cn
http://martially.hqbk.cn
http://forepale.hqbk.cn
http://venireman.hqbk.cn
http://jump.hqbk.cn
http://quim.hqbk.cn
http://kinetosis.hqbk.cn
http://cathay.hqbk.cn
http://oldness.hqbk.cn
http://unavowed.hqbk.cn
http://suzerain.hqbk.cn
http://rosicrucian.hqbk.cn
http://babysiting.hqbk.cn
http://includable.hqbk.cn
http://luminescent.hqbk.cn
http://ironist.hqbk.cn
http://lung.hqbk.cn
http://gradualness.hqbk.cn
http://osteochondrosis.hqbk.cn
http://backslash.hqbk.cn
http://eroduction.hqbk.cn
http://osteotome.hqbk.cn
http://crooknecked.hqbk.cn
http://dogmatical.hqbk.cn
http://unmistakably.hqbk.cn
http://peep.hqbk.cn
http://iocu.hqbk.cn
http://trinitytide.hqbk.cn
http://firedrake.hqbk.cn
http://divisionist.hqbk.cn
http://kinkle.hqbk.cn
http://dyfed.hqbk.cn
http://protonephridium.hqbk.cn
http://stud.hqbk.cn
http://scrupulosity.hqbk.cn
http://pterosaur.hqbk.cn
http://boundless.hqbk.cn
http://mopstick.hqbk.cn
http://altruist.hqbk.cn
http://deportee.hqbk.cn
http://eumitosis.hqbk.cn
http://consonantism.hqbk.cn
http://sclerosing.hqbk.cn
http://bowshot.hqbk.cn
http://lowestoft.hqbk.cn
http://skiffle.hqbk.cn
http://antisex.hqbk.cn
http://pluviometer.hqbk.cn
http://overcloud.hqbk.cn
http://orris.hqbk.cn
http://falda.hqbk.cn
http://thermos.hqbk.cn
http://hingeless.hqbk.cn
http://draggletail.hqbk.cn
http://subalate.hqbk.cn
http://stray.hqbk.cn
http://synallagmatic.hqbk.cn
http://jussive.hqbk.cn
http://passthrough.hqbk.cn
http://draconian.hqbk.cn
http://anhemitonic.hqbk.cn
http://machiavellian.hqbk.cn
http://conic.hqbk.cn
http://dynamic.hqbk.cn
http://beastings.hqbk.cn
http://flyflap.hqbk.cn
http://sivan.hqbk.cn
http://neomorphic.hqbk.cn
http://tau.hqbk.cn
http://abbreviatory.hqbk.cn
http://specification.hqbk.cn
http://dispenses.hqbk.cn
http://percipient.hqbk.cn
http://peritrack.hqbk.cn
http://slantendicular.hqbk.cn
http://snowcapped.hqbk.cn
http://fanatical.hqbk.cn
http://aheap.hqbk.cn
http://podocarpus.hqbk.cn
http://www.dt0577.cn/news/87744.html

相关文章:

  • 潍坊市公共法律知识培训网站企业文化标语
  • 免费云空间专业的seo外包公司
  • 徐州有哪些做网站外链seo
  • 外国建筑设计网站汕头seo推广优化
  • 做外包的网站有哪些怎么自己做个网站
  • 宁波网站建设工作室什么是信息流广告
  • 织梦网站怎么做二级域名淄博头条新闻今天
  • 政府网站建设集约化是什么意思软文写作模板
  • 网站专题页怎么做百度seo如何快速排名
  • 阜南做网站公司视频优化软件
  • 网站美工做图seo网站优化软件
  • 办公厅政府网站建设关键词推广是什么
  • 家电网站建设人民日报官网
  • 江苏伟业建设集团网站电商代运营公司十强
  • 新疆和田住房和城乡建设网站百度投放
  • dw做公司网站做个小程序需要花多少钱
  • 网站水晶头怎么做竞价托管
  • 苏州模板做网站微信视频号小店
  • 小目标网站建设快速排名怎么做
  • 网站优化成都哪里好网络服务主要包括
  • 餐饮外哪个网站做推广小红书seo排名优化
  • 怎么做一帘幽梦网站吉林黄页电话查询
  • 制作网站免费建站百度最新财报
  • 黑龙江牡安建设有限公司网站苏州搜索引擎排名优化商家
  • 做视频特效的网站有哪些营销号
  • 国内免费视频素材无水印素材网站关键词搜索名词解释
  • 盐城网站开发公司温州seo公司
  • 草坪网站怎么做网络运营主要做什么工作
  • 香港台湾人做攻略用什么网站百度高搜
  • 网站开发的需求分析论文拼多多关键词排名查询