本文将向大家介绍几个在web应用程序上比较实用的htaccess 技巧。
准备工作
Htaccess 文件是Apache HTTP web服务器的纯文本配置文件。无需访问httpd.conf
文件,用户就可以设置目录选项。因此,要求你的服务器使用Apache,并且主机也支持htaccess
文件(大多数主机都支持)。
1.
防止盗链
盗链 也叫内嵌链接,是指一个网站的链接直接导向另一个网站上的对象。这会给另一个网站造成带宽和流量的损失。对于提供大量图片的站点来说,这个问题就比较严重。 使用htaccess可以解决这个问题。
http://www.shapelessmass.com
There are ways to fix this growing problem using htaccess. First here is the image we are trying to protect.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
#domains that can link to images
#add as many as you want
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?demo.collegeaintcheap.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?noahhendrix.com [NC]
#show no image when hotlinked
RewriteRule \.(jpg|png|gif)$ - [NC,F,L]
我们将按下面的步骤一步步操作
- 首先得打开Apache里的mod_rewrite,用于实现重新定向用户的请求。
- 下一步,用RewriteCond设置条件。这需要运用到两个参数TestString
和CondPattern
。TestString是用来验证CondPattern的字符串(使用常规的表达)。.${HTTP_REFERER}
是Apache提供的域名请求变量。为了保护代理服务器用户提交空白请求,这里允许用户发送空白HTTP请求。
- 接着,用同样的句法设置允许链接图片的URL。命令最后的[NC]
标记,只是让重写引擎忽视它。你可以用相同的句法添加更多的域名。为了方便举例,我添加了我的个人域名。
- 最后,最后一行是重写规则,上面所有的条件都不满足的情况下使用。也要用到两个变量Pattern
和Substitution
,pattern用的是常规的表达匹配,substitution 是替换任何匹配用的。此时,申请需以jpg、png、 gif结尾。找到申请后,用空白来替代。通过标签来进一步说明要干什么, NC
代表无符合的情况,F发送
403禁止错误页面给用户,L
告知重写引擎停止重写,因此其它规则都不再适用。
这种方法相当简单,我们的目的也就是告诉用户我们不想他们盗用我们的图片,那么干脆不发送403错误禁止页面直接把盗链请求转到一个图片。把最后一行的代码用下面的代码替换就可以。
#show an alternate image
RewriteRule \.(jpg|png|gif)$ http://demo.collegeaintcheap.com/envato/htaccess/hotlink/images/hotlink.jpeg [NC,R,L]
你可以把域名URL地址改为图像路径,不过需要以jpg、png、gif 结尾。要不然会重新运用规则给服务器造成死循环。我建议使用.jpeg来解决这个问题。这里R
标记取代F
代表发送一个转向。
2.
通过IP地址阻止用户
如果网站上出现大量的垃圾邮件,就可以通过IP地址来阻止用户。你可以在日志文件里找到他们的IP,只要把IP地址添加到htaccess文件就可以。
Order Deny,Allow
Deny from 24.121.202.23
# Deny from 0.0.0.0
在mod_access模块里用Order指令可以拒绝或允许指定IP访问。只要使用句法Deny from IP ADDRESS
就可以禁止这些用户访问我们的目录。
3.ErrorDocument
所有专业性的网站都会使用自定义的错误页面。在Apache 里可以使用ErrorDocument指令来完成。自定义的错误页面要比默认的页面好很多。
ErrorDocument 404 http://demo.collegeaintcheap.com/envato/htaccess/errors/404.html
ErrorDocument 403 http://demo.collegeaintcheap.com/envato/htaccess/errors/403.html
ErrorDocument 500 http://demo.collegeaintcheap.com/envato/htaccess/errors/500.html
ErrorDocument有两个参数error-code
和document
。
上面的代码是最常见的HTTP错误提示代码:404未找到、403 禁止、500
服务器出错。你可以给你的错误文件提供完整的URL或相对路径。你也可以转向到一个PHP脚本上,用一个数据库记录错误或者发送邮件给你(虽然有点烦
人)。这是用来控制web应用程序的一个非常好的方法。看看 Smashing Magazine的404 错误页面展示
获得一些启发吧!
4.升级时转向
如果你的网站正在升级,你需要转向到另一个页面通知用户,以防止用户看到损坏页面或者加载过程出现的潜在安全漏洞问题。在页面对所有用户开放前,我们需要先允许指定IP访问来测试。所有这些都可以在htaccess 文件上实现。
RewriteEngine on
RewriteCond %{REQUEST_URI} !/upgrade.html$
RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30
RewriteRule $ http://demo.collegeaintcheap.com/envato/htaccess/upgrade/upgrade.html [R=302,L]
我们还是使用mod_rewrite
不过是一种逆向思维。首先我们需要设定条件来排除升级的文档,否则服务器陷入循环。接着,测试用的IP不执行转向。最后用重写规则给用户发回一个升级页
面。标签还是跟之前的一样,只不过定向到302状态,告诉浏览器该页面暂时迁移了并做相应的缓存。同样地在Smashing
Magazine,里也有很多的网站维护页面
。
5.
隐藏目录列表
出于安全考虑,限制目录列表的权限和Apache默认行为是有必要的。这一点也可以在htaccess文件上实现。防止访问者看到我们的目录列表。
Options -Indexes
这样,用户如果发送无索引的目录请求,就会显示 403禁止错误页面。
原文:5 Fun and Practical Htaccess Solutions
分享到:
相关推荐
五个htaccess文件的常用技巧.docx
Apache Web 服务器可以通过 .htaccess 文件来操作各种信息,这是一个目录级配置文件的默认名称,允许去中央化的 Web 服务器配置管理。可用来重写服务器的全局配置。该文件的目的就是为了允许单独目录的访问控制配置...
htaccess
htaccess_Editor HTACCESS编辑器
一个用来操作apache的.htaccess文件的类 它可以帮您处理Apache服务器的.htaccess文件。 您并不需要去了解.htaccess的语法,这个类会帮你搞定一些譬如修改权限、增加使用者的操作.
主要介绍了21个常用的apache .htaccess文件配置技巧分享,涵盖了网站中最常用的一些功能需求解决办法,需要的朋友可以参考下
htaccess规则详细介绍htaccess规则详细介绍
htaccess详细的使用手册,包括配置htaccess文件,非常详细,对于web开发的人员来说,是一个必不可少的手册!
.htaccess伪静态 适用方维分享系统以及其他php
zencart .htaccess
htaccess在线生成编辑器是一个免费的在线生成工具,它能够为你的网站快速生成一个 .htaccess 文件。使用非常简单,在页面左侧选择类别,再按照提示在右侧输入相关信息。最后把生成的代码以“.htaccess”的文件名保存...
.htaccess重定向和url重写的几个例子.docx
对于那些,web开发的来说,header头部和left...当然把我这个.htaccess文件下载后放在html同级目录下即可在不改变html后缀的情况下,也可以在html文件写PHP代码了.例如<?php require_once './public/header.html'; ?>
htaccess文件 linux apache 防止目录浏览
htaccess 文件下载
htaccess URL重写详细规则htaccess URL重写详细规则
.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能。.htaccess 配置文件坚持了Unix的一个文化——使用一个...
介绍,主要讲解几种常利用的指令。SetHandler 可以强制所有匹配的文件被一个指定的处理器处理用法:示例 1:此时当前目录及其子目录下所有文件都会被当做 p
文件上传之htaccess上传攻击