zoukankan      html  css  js  c++  java
  • apache的rewrite机制

    当我们使用thinkphp的时候,比如说我们访问一个Test控制器的test方法,http://localhost/index.php/Test/test/1.html,那个这个1是用get方式传递的参数,假如这个参数为id,那么我们其实访问的真实地址是http://localhost/index.php/Test/test?id=1.html,用过thinkphp的都知道,其实这个就是伪静态,通过配置tp配置文件的url模式可以实现,但是伪静态的实现,其实也可以用apache的rewrite机制实现

    apache的rewrite机制的实现:  

    比如 http://www.test.com/test.php?type=music&id=100

    希望上面的url 变成

    http://www.test.com/test-music-id100.html

    1.先启用rewrite模块

    修改apache中conf目录下httpd.conf文件,找到LoadModule rewrite_module modules/mod_rewrite.so并打开

    2.配置虚拟域名

    (1)打开apache中conf目录下的vhosts.conf,并引入conf/extra/httpd-vhosts.conf,代码如下

    Include conf/extra/httpd-vhosts.conf

    (2)修改httpd-vhost.conf文件,代码如下

    <VirtualHost *:80>

        DocumentRoot "D:/phpstudy/www/test"

        <Directory "D:/phpstudy/www/test">

        </Directory>

    </VirtualHost>

    其中

    DocumentRoot是网站根目录

    Directory配置节点,用于指定该目录下的文件或是图片.的访问权限,也可以设置虚拟主机的错误页面,欢迎页面等

    (3)在C:WindowsSystem32driversetc目录下的hosts文件,设置ip和主机的对应关系,代码如下

    127.0.0.1 www.test.com

    (4)访问127.0.0.1 www.test.com/test.php

     

    配置成功!

    3.配置rewrite机制

    一般来说,httpd-vhost.conf文件是不能让我们程序员随便配置的,所以我们可以使用.htaccess文件进行配置

    (1)修改httpd-vhost.conf文件,开启用.htaccess文件去匹配规则,代码如下

      allowoverride all

    (2)在网站根目录建立.htaccess文件,代码如下

    <IfModule rewrite_module>

    #rewrite 模块启用

    RewriteEngine On

    #配置我们的rewrite规则

    RewriteRule test-(w+)-id(d+).html$ test.php?type=$1&id=$2

    </IfModule>

    其中rewriteRule使用正则表达式来匹配的,匹配的部分是域名后面的字符串,也可以同时配置多个规则(RewriteRule)

    (3)重启apache并测试(注意,只是修改.htaccess是不需要重启apache的)

    php代码

    测试结果

    关于Directory其实还有许多常用的配置的,因为这次主要是记录伪静态的实现,所以等下次有时间的话我会继续整理一份关于Directory的常用配置

      

  • 相关阅读:
    第3次作业卷积神经网络
    SpringCloud Sidecar 整合.Net WebApi
    redefinition of class解决
    DP学习笔记
    NOIP2018 Day2毒瘤题目
    NOIP Day1总结
    关于DP
    这次的PION的总结
    NOIP模拟赛D2T1自己的解题思路
    ABAP Editor自动完成功能
  • 原文地址:https://www.cnblogs.com/zhp-king/p/6931312.html
Copyright © 2011-2022 走看看