apache rewrite(重定向)

很多时候,由于项目变更的需要,我们会将一个网站的域名变更为另外一个域名,又或者是一个地址转变为另外一个地址。而在项目里进行跳转并不是一个明智的选择,这个时候我们就可以使用到apache的mod_rewrite模块。 mod_rewrite 提供了基于正则表达式规则动态修改传入的请求的 URL 的方法。 这允许你以自己喜欢的任意方法映射任意 URL 到你的内部 URL 结构。 当然启用它的第一步就是要加载相关的模块,你可以打开httpd.conf将mod_rewrite前的#号注释掉。 LoadModule rewritemodule modules/modrewrite.so 然后你需要重启apache服务器,这样rewrite模块就开启了。 这个模块可以在服务器上下文 (httpd.conf),虚拟主机上下文 ( 指令块),目录上下文 (.htaccess 文件和 指令块) 对完整的 URL (包含目录信息部分和查询字符串部分) 操作。 重写结果可以进行多种规则处理,如:内部的后续处理,外部请求重定向,甚至透过内部代理, 这取决于你为规则附加的标志。 而rewrite规则中的标志通常有以下几种:

  1. R 强制外部重定向
  2. F 禁用URL,返回403HTTP状态码。
  3. G 强制URL为GONE,返回410HTTP状态码。
  4. P 强制使用代理转发。
  5. L 表明当前规则是最后一条规则,停止分析以后规则的重写。
  6. N 重新从第一条规则开始运行重写过程。
  7. C 与下一条规则关联
  8. T=MIME-type(force MIME type) 强制MIME类型
  9. NS 只用于不是内部子请求
  10. NC 不区分大小写
  11. QSA 追加请求字符串
  12. NE 不在输出转义特殊字符 %3d$1 等价于 =$1 常用的rewrite规则实例 301重定向 将www.aaa.com 301 到 www.bbb.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com [NC]
RewriteRule ^(.*) http://www.bbb.com/ [R=301,L]

伪静态 /info/info.php?infoid=100转换为/info/100.html个格式

RewriteEngine on
RewriteRule index.html index.php
RewriteRule (\d+).html$ info.php\?infoid=$1

内部重定向 通过 http://natserver/forum 来访问webserver上面提供的论坛服务,而forum目录在 /var/www/html 下

RewriteEngine on
RewriteBase /forum/
RewriteRule (.*) http://webserverip/$1 [P,L]
由睿江云提供,想了解更多,请登陆www.eflycloud.com

转载于:https://my.oschina.net/u/3363053/blog/1154176

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值