Apache模块mod_rewrite详解

什么是mod_rewrite?
mod_rewrite是一个基于一定规则的实时重写URL请求的引擎。此模块可以操作URL的所有部分,在服务器级的(httpd.conf)和目录级的(.htaccess)配置都有效。
启用mod_rewrite模块
#LoadModule rewrite_module modules/mod_rewrite.so

设置重写目录
<Directory "/var/www">
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
<Directory></Directory>封装一组指令,使之对某个目录及其子目录生效。
Options 控制在特定目录中将使用哪些服务器特性
Indexes如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。
当服务器发现一个.htaccess时,如果是All则会读取里边的配置指令,如果是None,服务器不会读取.htaccess文件。

在重写目录下面建立.htaccess文件
#开启rewrite功能
RewriteEngine On

#RewriteCond 指定定义了一个规则的条件,即在一个RewriteRule指令之前有一个或多个#RewriteCond指令。条件之后的重写规则只有在当前URL和 pattern匹配并且符合这些条件#的时候才会起作用。
#服务器变量引用方法 %{ NAME_OF_VARIABLE }
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule ...some special stuff for any of these hosts...
#可以用OR或者AND来连接条件,如果没有OR,那么得写三次RewriteCond和RewriteRule

RewriteRule !/.(js|ico|gif|jpg|png|css)$ index.php
#将不是对以上文件名结尾的文件的请求都定位到index.php

RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^/$ /homepage.max.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule ^/$ /homepage.min.html [L]
RewriteRule ^/$ /homepage.std.html [L]
#L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值