Apache Rewrite重写模块(二):10个实例详细分析

接上一篇文章。

以下所有实例,都是在本地测试,访问ip为 127.0.0.2。所以,实际应用时需要换成域名,而且可能用到正则(如实例一)。

一、防止网站图片被盗链

RewriteCond %{HTTP_REFERER}  !^$
#RewriteCond %{HTTP_REFERER}  !^http(s)?://(www\.)?你的域名.com [NC]
RewriteCond %{HTTP_REFERER} !^http://127.0.0.2 [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
(1)第1句(条件):来路 HTTP_REFERER 不为空

(2)第2句(条件):来路 HTTP_REFERER,不是以 http://127.0.0.2 开头。[NC]表示不区别大小写

(3)第3句(规则):请求的地址以 .jpg或.jpeg或.png或.gif 以结尾(即图片文件),则不重写URL(- 告诉apache不要重写;你也可以重定向到某张图片)。

(4)[F] 即 Forbidden,表示服务器返回 403 Forbidden错误给用户浏览器(如下图);[L]表示最后一条,如果匹配,就不再匹配后面的规则了。

如:http://127.0.0.5 请求了 图片 http://127.0.0.2/111.jpg,返回403


二、重定向没有 www 到带 www 的URL(301重定向)

做SEO时,往往需要将 URL 统一标准化,将不带 www 的 URL 做301 重定向到带 www 的URL。 生效时,如果访问 http://你的域名.com,会跳转到 http://www.你的域名.com。

RewriteCond %{HTTP_HOST} ^你的域名.com$
RewriteRule (.*) http://www.你的域名.com/$1 [R=301,L]
(1)需要知道 %{HTTP_HOST} 代表什么, 见本博客的上一篇文章。

(2)R=301 表示 301 永久重定向;默认不写时,是 302 临时重定向。

(3)需要知道 RewriteRule 中的括号内的 .* 代表网址的哪一部分。如网址:http://你的域名.com/test.html,那么,.* 就是 test.html。后面的 $1 即是 .* 。

测试:在PHP中,可以通过下面重写规则,可以知道例子中的 .* 代表网址的哪一部分。

RewriteCond %{REQUEST_FILENAME} !index.php$
RewriteRule (.*)  index.php?id=$1
#index.php 将 $_SERVER 输出

三、整站 301 重定向

换域名时,做整站301重定向。原理和例子2差不多

RewriteCond %{HTTP_HOST} 127.0.0.2
RewriteRule (.*)  http://127.0.0.5/$1  [R=301,L]

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

附图1——RewriteRule 第三个参数列表


附图2—— RewriteCond 常用正则和第三参数,及其它


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值