apache中的mod_rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求,主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式,允许通过它来改变Apache Web服务器的配置。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。,而配置伪静态的方法,需要根据web服务器的不同来做不同的配置,一般常用的有Apache服务器和Nginx服务器,本篇只介绍在Apache服务器上开启和通过.htaccess文件来配置伪静态的方法。,如果要想用到rewrite模块,必须确保在已安装或加载rewrite模块。一般在编译apache的时候就安装了rewrite模块。,打开Apache配置文件httpd.conf,找到代码:,把前面#去掉。没有则添加,但必须独占一行,使apache支持 mod_rewrite 模块。,打开虚拟机配置文件vhosts.conf,找到代码:,AllowOverride None
修改为: AllowOverride All
,使Apache支持 .htaccess 文件,在.htaccess 文件中输入内容,示例如下,// RewriteEngine on 为 启动rewrite引擎,// RewriteRule 部分为自己的伪静态规则,1、RewriteEngine 为重写引擎开关,on为开启,off为关闭。,2、RewriteRule 是路由转向规则,之前路径为浏览器中要输入路径,这里可以用正则表达式表达。+空格 后路径为后台实际转向路径。,3、转向后台实际路径时可以传参数,$1 代表浏览器路径中输入的第一个正则表达式的值,以此类推,$2代表第二个正则表达式的值。,4、RewriteRule 路由转向规则里正则表达式用括号 () 括起来。,5、在RewriteRule写法中,^表示语句开始,$ 表示语句的结束,L 表明当前规则是最后一条规则,停止分析以后重写,NC表示不区分大小写,QSA表示追加请求的字符串。,6、补充Apache mod_rewrite规则重写的标志说明: