Apache中伪静态Rewrite的使用方法和URL重写规则表达式讲解

 更新时间:2022年11月19日 14:34:38   作者:码农大蔡哥  
apache中的mod_rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求,主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式,允许通过它来改变Apache Web服务器的配置。

apache中的mod_rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求,主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式,允许通过它来改变Apache Web服务器的配置。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。

而配置伪静态的方法,需要根据web服务器的不同来做不同的配置,一般常用的有Apache服务器和Nginx服务器,本篇只介绍在Apache服务器上开启和通过.htaccess文件来配置伪静态的方法。

一、安装rewrite模块

如果要想用到rewrite模块,必须确保在已安装或加载rewrite模块。一般在编译apache的时候就安装了rewrite模块。

二、配置文件httpd.conf中启用Rewrite

打开Apache配置文件httpd.conf,找到代码:

#LoadModule rewrite_module modules/mod_rewrite.so

把前面#去掉。没有则添加,但必须独占一行,使apache支持 mod_rewrite 模块。

三、在服务器中找到配置文件vhosts.conf,启用.htaccess

打开虚拟机配置文件vhosts.conf,找到代码:

AllowOverride None 修改为: AllowOverride All

使Apache支持 .htaccess 文件

四、在要启用伪静态的项目根目录下建立 .htaccess 文件

在.htaccess 文件中输入内容,示例如下

< IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule RewriteRule index.html$ index.php
#RewriteRule ^(.*?).html$ index.php?$1.html [QSA,PT,L]
#RewriteRule ^/index([0-9]*).html$ /index.php?id=$1
#更多伪静态规则
< /IfModule>

// RewriteEngine on 为 启动rewrite引擎

// RewriteRule 部分为自己的伪静态规则

五、重启Apache服务器,就OK了

六、参数补充说明

1、RewriteEngine 为重写引擎开关,on为开启,off为关闭。

2、RewriteRule 是路由转向规则,之前路径为浏览器中要输入路径,这里可以用正则表达式表达。+空格 后路径为后台实际转向路径。

3、转向后台实际路径时可以传参数,$1 代表浏览器路径中输入的第一个正则表达式的值,以此类推,$2代表第二个正则表达式的值。

4、RewriteRule 路由转向规则里正则表达式用括号 () 括起来。

5、在RewriteRule写法中,^表示语句开始,$ 表示语句的结束,L 表明当前规则是最后一条规则,停止分析以后重写,NC表示不区分大小写,QSA表示追加请求的字符串。

RewriteRule规则表达式的说明:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志

6、补充Apache mod_rewrite规则重写的标志说明:

1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符

到此这篇关于Apache中伪静态Rewrite的使用方法和URL重写规则表达式讲解的文章就介绍到这了,更多相关∪rL重写伪静态Rewrite内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • apache time_wait连接数太多问题解决方法

    apache time_wait连接数太多问题解决方法

    这篇文章主要介绍了apache time_wait连接数太多问题解决方法,本文使用调整内核参数来解决,需要的朋友可以参考下
    2014-11-11
  • Ubuntu18.04更改apt源为阿里云源的详细过程

    Ubuntu18.04更改apt源为阿里云源的详细过程

    安装Ubuntu 18.04后,使用国外源太慢了,修改为国内源会快很多,下面这篇文章主要给大家介绍了关于Ubuntu18.04更改apt源为阿里云源的相关资料,需要的朋友可以参考下
    2021-12-12
  • 解决生产环境遇到的curl和yum命令报错问题

    解决生产环境遇到的curl和yum命令报错问题

    在银河麒麟V10SP2arm64系统下,升级sshd服务同时升级了openssl至1.1.1l版本,导致curl和yum命令报错,分析原因是openssl版本与libcurl.so.4文件不兼容,尝试修复无效后,通过重新编译安装curl解决问题,建议在升级openssl时谨慎
    2024-09-09
  • Linux使用sar命令跟踪和记录系统资源利用率

    Linux使用sar命令跟踪和记录系统资源利用率

    sar 命令是 Linux 系统中的一个系统监控工具,由 sysstat 包提供,它可以定期收集系统的各种性能数据,包括CPU利用率、内存使用情况、磁盘I/O活动、网络流量等,本文介绍了如何在 Linux 中使用 sar 命令跟踪和记录系统资源利用率,需要的朋友可以参考下
    2024-07-07
  • CentOS6升级glibc操作步骤

    CentOS6升级glibc操作步骤

    大家好,本篇文章主要讲的是CentOS6升级glibc操作步骤,感兴趣的小伙伴赶紧来看一看吧,对你有帮助的话记得收藏本篇文章哦!方便下次浏览
    2021-11-11
  • 使用 bash 倒计时日期的方法

    使用 bash 倒计时日期的方法

    这篇文章主要介绍了用 bash 倒计时日期的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)

    Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)

    这篇文章主要给大家介绍了关于Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-10-10
  • GTK treeview原理及使用方法解析

    GTK treeview原理及使用方法解析

    这篇文章主要介绍了GTK treeview原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • linux负载均衡总结性说明 四层负载和七层负载有什么区别

    linux负载均衡总结性说明 四层负载和七层负载有什么区别

    这篇文章主要为大家详细介绍了linux负载均衡的相关资料,什么是负载均衡?四层负载和七层负载有什么区别?具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • linux contos6.8下部署kafka集群的方法

    linux contos6.8下部署kafka集群的方法

    这篇文章主要介绍了linux contos6.8下部署kafka集群的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论