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:\Windows\System32\drivers\etc目录下的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的常用配置
apache的rewrite机制的更多相关文章
- 页面静态化3 --- 伪静态技术之Apache的rewrite机制
Apache的rewrite机制: 意思就是,你发送的地址,比如:http://localhost/news-id67.html会被Apache改写成http://localhost/news.p ...
- apache的rewrite机制配置
步骤: 1:启用rewrite模块,在默认情况下,没有启用 修改httpd.conf文件 #启动rewrite模块 LoadModule rewrite_module modules/mod_rewr ...
- apache配置rewrite及.htaccess文件(转载)
今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在. 自 ...
- apache url rewrite 的RewriteRule参数详解
apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...
- Magento - Rewrite机制一窥
看一个url例子 http://localhost/magento/index.php/customer/account/login 这里假定http://localhost/magento/ 是ma ...
- Apache的rewrite规则详细介绍
Apache的rewrite规则详细介绍 发布日期:2008-09-02 16:16 来源: 作者: 点击:7044 rewrite标志 R[=code](force redirect) 强制外部重定 ...
- Apache Lucene评分机制的内部工作原理
Apache Lucene评分机制的内部工作原理' 第5章
- 【转】CentOs中Apache开启rewrite模块详解
rewrite是apache环境的一个伪静态功能了,如果我们没有没让Apache开启rewrite功能,网站上所有的rewrite规则都不可使用. centos的配置文件放在: /etc/httpd/ ...
- Nginx与Apache的Rewrite规则的区别
一.Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx R ...
随机推荐
- ajax 调用 webService
前台脚本<script type="text/javascript"> $(function () { $.ajax({ type: "POST", ...
- typescript 第二部分
ts 中不允许变量同名 函数定义的两种方式 第一种:命名函数 = 声明式定义 function fn(){} 第二种:匿名函数 var fn = function(){} function fn(x: ...
- Dark 数据类型
dark基础数据类型 1数值型 num int a =1; double b=1.0; 2 字符型 string a ='hello'; 插值表达式${expression} int a = 1; ...
- Amphorae 与 Octavia Worker 的安全通信实现
前言 在前面的章节中我们记录了 LoadBalancer.Listener.Pool.Member 等等 Octavia 核心资源对象的创建流程,本篇我们在此之上继续讨论处于 LB Managemen ...
- 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍
1.完善我们的account案例 2.分析案例中问题 3.回顾之前讲过的一个技术:动态代理 4.动态代理另一种实现方式 5.解决案例中的问题 6.AOP的概念 7.spring中的AOP相关术语 8. ...
- 三十八:数据库之ORM层面删除数据的注意事项
准备工作 from sqlalchemy import create_engine, Column, Integer, String, Float, Text, ForeignKeyfrom sqla ...
- SQLServer 断开指定会话
方法1: SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo] ...
- Golang的面向对象编程【结构体、方法、继承、接口】
Golang也支持面向对象编程.但与以前学过传统的面向对象编程语言有区别.1)Golang没有类class,Go语言的结构体struct和类class有相似的特性.2)Golang中不存在继承,方法重 ...
- 基于Opencv的自适应中值滤波函数selfAdaptiveMedianBlur()
7.3.3 自适应滤波器 自适应中值滤波器 对于7.3.2节所讨论的中值滤波器,只要脉冲噪声的空间密度不大,性能还是可以的(根据经验需Pa和Pb小于0.2).本节将证明,自适应中值滤波器可以处理更大概 ...
- 【BW系列】SAP BW on HANA 迁移问题
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW on HANA 迁移问 ...