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 ...
随机推荐
- Dijk入门(杭电2544题)
#include<iostream> #include<cstring> using namespace std; #define INF 0x3f3f3f3f int n,m ...
- CopyOnWriteArrayList使用
1.在遍历操作数量大大超过可变操作是(add,set等等)使用.原因是其可变操作是通过对底层数据进行一次新的复制来实现的. 2.迭代器创建后,其不会反应列表的添加.移除或更改.其迭代器是”快照“风格的 ...
- MySQL5.7忘记root密码-手动修改密码教程
https://blog.csdn.net/greywolf0824/article/details/80215199
- leetcode-easy-string-344 Reverse String
mycode class Solution(object): def reverseString(self, s): """ :type s: List[str] :rt ...
- Spring Cloud负载均衡:使用zuul作服务器端负载均衡
1.目的: 本文简述Spring Cloud负载均衡之服务器负载均衡模式,使用组件为zuul. zuul作为Spring Cloud中的网关组件,负责路由转发.身份验证.请求过滤等等功能,那么我们可以 ...
- Ubuntu13.04编译安装cmake2.8.12.2
前提: 安装过程需要gcc和gcc-c++.ubuntu13.04桌面版自带gcc4.7,apt-get install g++4.7安装g++./usr/bin目录下有x86_64-linux-gn ...
- VueLoaderPlugin作用
在webpack配置里加入new VueLoaderPlugin, 在plugin里打断点 然后debug: 在这个地方: 可以发现,在webpack初始化的阶段..webpack.js刚开始执行的时 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码
新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别.为了把这三类方法表现出来,并不局限于方法干什么事 ...
- Report List 报表开发
1. Report List的输出定义 * ...NO STANDARD PAGE HEADING: 输出的报表不包含表头: * ...LINE-SIZE col : 输出的报表不包含表头: * .. ...
- 2 Configuring SAP ERP Sales and Distribution -introduction to SAP
First Steps in SAPWe’ll now discuss some of the basic menus, screens, and transactions that you need ...