继吉 发表于 2018-11-23 07:16:20

apache 重写和虚拟目录配置

  要求:
  假如我请求一个地址: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,将前面的‘#’去掉。
②创建虚拟目录

    #网站域名
   ServerName www.lxy.com
    #网站根目录
   DocumentRoot "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


    #设置欢迎页面
DirectoryIndex11.php


    #如果匹配不到,可以指定一个错误页
errorDocument404 /404.php




    #可以把Allowoverride这个启动,然后把重写规则放到 .htaccess中,也可以直接放在虚拟主机中配置
   #Allowoverride All
   RewriteEngine On
    #重写规则
   #RewriteRule news-id(\d+)\.html$ show.php?id=$1
   RewriteRule ^(+)-(+)-id(\d+)\.html$show.php?cat=$1&class=$2&id=$3


   



③.下面我写一个show.php的文件,内容主要为打印出接收到的参数即可



接下来我们来访问以下即可
  

  

  

  

  我们也可以把重新规则写入.htaccess文件中,将.htaccess文件放到网站根目录 或者 需要执行的PHP文件所在的文件夹下。然后将 Allowoverride All添加到虚拟目录的配置选择中去,在.htaccess文件中添加重写规则即可。

[*]  #创建一个Rewrite Engine (URL重写工具)
[*]  RewriteEngine On
[*]  #定重写规则: 主要使用正则表达式
[*]  RewriteRule^(+)-(+)-id(\d+)\.html$ show.php?cat=$1&class=$2&id=$3
  效果跟将重写规则写在配置文件中是一样的。
  




页: [1]
查看完整版本: apache 重写和虚拟目录配置