要求:
假如我请求一个地址:www.lxy.com/news-sport-id123.html
转成:www.lxy.com/show.php?cate=news&class=sport&id=123
步骤:
①首先我们需要在apache中启用rewrite模块
打开apache的httpd.conf文件,找到#LoadModule rewrite_module modules/mod_rewrite.so,将前面的‘#’去掉。
②创建虚拟目录
<VirtualHost *:80>
#网站域名
ServerName www.lxy.com
#网站根目录
DocumentRoot "E:/web/lxy/"
#设置网站目录的权限
<Directory "E:/web/lxy/">
#设置顺序,如下规则的意思是首先允许所有访问但是拒绝1.1.1.1这个ip访问这个刚开始把我弄晕了
Order allow,deny
Allowfrom All
Deny from 1.1.1.1
#options选项设置网站是否可以列出文件列表,网站正式上线后除了有特殊需求否则都不允许列出文件列表,但是需要特别注意的是如果开启apache的rewrite后,options的参数必须为+indexes
#允许列出文件列表
Options +Indexes
#不允许列出文件列表的选项为 Options +Indexes
#设置欢迎页面
DirectoryIndex 11.php
#如果匹配不到,可以指定一个错误页
errorDocument404 /404.php
#可以把Allowoverride这个启动,然后把重写规则放到 .htaccess中,也可以直接放在虚拟主机中配置
#Allowoverride All
RewriteEngine On
#重写规则
#RewriteRule news-id(\d+)\.html$ show.php?id=$1
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-id(\d+)\.html$show.php?cat=$1&class=$2&id=$3
</Directory>
</VirtualHost>
③.下面我写一个show.php的文件,内容主要为打印出接收到的参数即可
<?php
Print_r($_SERVER);
?>
接下来我们来访问以下即可
我们也可以把重新规则写入.htaccess文件中,将.htaccess文件放到网站根目录 或者 需要执行的PHP文件所在的文件夹下。然后将 Allowoverride All添加到虚拟目录的配置选择中去,在.htaccess文件中添加重写规则即可。
#创建一个Rewrite Engine (URL重写工具)
RewriteEngine On
#定重写规则: 主要使用正则表达式
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-id(\d+)\.html$ show.php?cat=$1&class=$2&id=$3
效果跟将重写规则写在配置文件中是一样的。
转载于:https://blog.51cto.com/wangyueheng88/1383911