首页 > 系统相关 >Apache和Nginx设置伪静态(URL Rewrite)的方法

Apache和Nginx设置伪静态(URL Rewrite)的方法

时间:2023-01-02 16:35:21浏览次数:42  
标签:httpd 匹配 Rewrite URL list Nginx html conf

在Apache中有两种方法配置,一是通过httpd.conf文件,二是通过.htaccess文件。 

使用 httpd.conf 来配置 rewrite 策略。 

要使用 httpd.conf 文件来设置伪静态策略,我们可以直接在 httpd.conf 中写入如下代码,如果您的网站是配置在 VirtualHost 中,则将这段代码加到对应的。 

使用.htaccess来配置rewrite策略。 

检查httpd.conf中的: 

RewriteEngine on

RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3

复制代码保存后重启httpd服务即可生效。 

常见问题: Q:为何都按上面设置了缺还是无法静态化? A:很有可能是因为别的目录设置项覆盖了。 

Nginx: 

Nginx下设置伪静态方法与Apache差不多,直接在nginx.conf (或者在对应的*.conf) 中找到需设置伪静态规则的服务器对应字段,在server{ location/{ } }中添加以下代码: 

server {

listen 80 default_server;

server_name _;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

rewrite ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3;

}

}

添加后重启Nginx服务即可生效! 

正则表达式匹配 

就用上面的例子中的伪静态策略来简单解释下正则表达式在配置的作用:

策略:RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3 

请求路径:http://www.abc.com/list-123-456.html 

本策略分成两段,第一段是使用正则表达式去匹配请求访问的路径,第二段是将匹配后的参数转化为真实访问的路径。策略执行时:^(.*)list-([0-9]+)-([0-9]+)\.html$ 与 /list-123-456.html这个字符串进行匹配: 

^和$字符分别代表了匹配输入字符串的开始和结束 

()中的匹配到的内容会被按顺序分配到变量$1 $2 $3中 

.*匹配任意字符串,且长度从0个到多个,故$1值为/ 

[0-9]+匹配字符0-9,长度1个到多个,故$2和$3分别是123和456 

所以最后真实访问的动态地址为/list.php?page=123&id=456 

上面只是介绍了基本的配置策略,其实这个rewrite规则还有非常多的玩法,例如使用RewriteCond进行域名层面的重写跳转。

标签:httpd,匹配,Rewrite,URL,list,Nginx,html,conf
From: https://www.cnblogs.com/ytweb/p/17020059.html

相关文章

  • curl命令常见用法汇总 good
     ​​curl​​是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。curl是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服......
  • GIT推送错误error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CAN
    报错如下:Countingobjects:100%(25515/25515),done.Deltacompressionusingupto4threadsCompressingobjects:100%(18794/18794),done.error:RPCfailed;......
  • nginx-clojure nginx clojure & java & groovy 模块
    nginx-clojure是一个nginx扩展模块,让我们可以直接运行clojure&java&groovy,还是比较强大的,支持的功能也不少我们可以直接基于jvm对于nginx进行扩展了,还是值得尝试......
  • 流畅的Flurl.Http
    注意:除了URL构建和解析之外的所有内容都需要安装Flurl.Http而不是基本的Flurl包。考虑与HTTP服务交互的一种非常常见的方式是“我想构建一个URL,然后调用它”。Flurl.......
  • nginx学习
    之前都只会照着网上的nginx配置和代码什么的直接拿过来用,但是没系统学习过,所以来系统学习一下nginx内容。1、nginx基本概念(1)nginx是什么,能做什么?Nginx是什么?Nginx介绍及......
  • buuctf URL解密 摩丝
    URL编码/解码详解当URL路径或者查询参数中,带有中文或者特殊字符的时候,就需要对URL进行编码(采用十六进制编码格式)。URL编码的原则是使用安全字符去表示那些不安全的字......
  • nginx in docker 手记
    踩坑了,参考Docker安装Nginx容器(完整详细版)_Touch&的博客-CSDN博客_dockernginx问题在nginx.conf这个文件上,挂载前需要自己先创建一个官方也有说从容器中拷贝一个......
  • Nginx 代理webSocket时60s自动断开, 保持长连接
    利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开,如下图:为了保持长连接,可以采取来两种方式.1.nginx.conf文件里locati......
  • Windows 安装以及配置Nginx
    1、windows下安装Nginx1.1从nginx官网下载相应的安装包:​​http://nginx.org/​​ 1.2建议下载 下载稳定版1.3解压到相应的目录,比如我是e盘然后修改目录名字为nginx......
  • Linux 安装Nginx集群测试
    5.1停止Nginx服务的四种方法从容停止服务这种方法较stop相比就比较温和一些了,需要进程完成当前工作后再停止。nginx-squit立即停止服务这种方法比较强硬,无论进程......