本文将向大家介绍几个在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]  

我们将按下面的步骤一步步操作

  1. 首先得打开Apache里的mod_rewrite,用于实现重新定向用户的请求。
  2. 下一步,用RewriteCond设置条件。这需要运用到两个参数TestStringCondPattern 。TestString是用来验证CondPattern的字符串(使用常规的表达)。.${HTTP_REFERER} 是Apache提供的域名请求变量。为了保护代理服务器用户提交空白请求,这里允许用户发送空白HTTP请求。
  3. 接着,用同样的句法设置允许链接图片的URL。命令最后的[NC] 标记,只是让重写引擎忽视它。你可以用相同的句法添加更多的域名。为了方便举例,我添加了我的个人域名。
  4. 最后,最后一行是重写规则,上面所有的条件都不满足的情况下使用。也要用到两个变量PatternSubstitution ,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-codedocument 。 上面的代码是最常见的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

5个常用的htaccess技巧相关推荐

  1. 你需要知道的20个常用的Python技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 Python的可读性和简单性是其广受 ...

  2. Google和Baidu常用的搜索技巧--转

    原文链接:http://mp.weixin.qq.com/s?__biz=MjM5NTY0MTY1OQ==&mid=2654509772&idx=1&sn=754454e374 ...

  3. python一些常用方法_python常用的一些技巧

    python常用的一些技巧 1.三目操作符 2.鸭子类型(duck typing) 首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型.以下是维基百科中对鸭子类型得论 ...

  4. 几则常用的BASIS技巧整理

    几则常用的BASIS技巧整理 1.创建一个新的用户 2.创建一个新的角色 3.设置SAPGUI自动LogOut功能 4.利用scat进行数据导入 5.配置个人信息 6.常用的BASIS相关的T-COD ...

  5. FPGA设计的常用思想与技巧(转)

     FPGA设计的常用思想与技巧    2007-04-30 16:54:51 大中小 本文讨论的四种常用 FPGA/CPLD 设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是 FP ...

  6. linux之gdb调试常用100个技巧

    linux之gdb调试常用100个技巧 https://gitlore.com/page/gitlore-git/gdb_tips/index.html 如果不懂linux gdb调试的 看下这篇文章 ...

  7. 抓取一台电脑linux,教程方法;用来获取Linux主机信息的5个常用命令电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;用来获取Linux主机信息的5个常用命令电脑技巧,以下是给大家带来的教程方法;用来获取Linux主机信息的5个常用命令,大家可以了解一下哦! 有些时候Linux 系统管理员在接 ...

  8. 16个简单实用的.htaccess技巧

    16个简单实用的.htaccess技巧   .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有 ...

  9. ps cc2019版为什么做图一复制图层就卡死_平面设计师会经常用到PS技巧有哪些

    原标题:平面设计师会经常用到PS技巧有哪些 本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 平面设计师会经常用到PS技巧有哪些?PS这个软件我从大学时期就开始用,经 ...

最新文章

  1. ACTIVEMQ 发布与订阅
  2. linux挂载wondiws目录,linux cifs自动挂载windows硬盘或文件夹
  3. java泛型程序设计——调用遗留代码
  4. linq to entity 左联接 右连接 以及内连接写法的区别(转)
  5. c语言条件编译include,7.1编译与预处理-include-c学习 | 时刻需
  6. 笨办法学 Python · 续 第三部分:数据结构
  7. JavaScript中call,apply,bind方法的总结。
  8. 关于大学生创新创业项目赛事汇总
  9. 手撕包菜BT搜索引擎带爬虫自动抓取安装
  10. 三菱FX5U rtu方式通讯两台施耐德ATV320变频器 采用Q系列plc也支持的sp.cprtcl指令
  11. IDC BGP 选型、出海线路
  12. 黑CNN网站:解恨但不明智
  13. HDU 5755 Gambler Bo(高斯消元裸题)——2016 Multi-University Training Contest 3
  14. 手码万字-带你全面了解存储基础知识
  15. 批量实现json_to_dataset将json文件转换为训练所需的dataset
  16. GAMES101作业1-VS2019
  17. a1502配置 macbook_a1502的macbook pro 苹果系统和… - Apple 社区
  18. watch 和mounted 执行顺序
  19. 苹果CMS内容管理系统 - 苹果CMS官方网站
  20. [翻译]WP7 QuickStart-第十一篇-在后台运行程序(墓碑效应)

热门文章

  1. 3 MIGO采购订单收货报错-表T169P,表目S001不存在
  2. C++:类的构造函数
  3. 记录几个CentOS安装包(rpm)的下载地址-离线安装必备
  4. CheckPoint
  5. 解决layui隐藏域:不显示问题(含案例、代码、截图)
  6. phpcmsV9站群去除域名绑定目录中的HTML的方法
  7. 算法:线性时间选择_机器学习必修课!scikit-learn 支持向量机算法库使用小结
  8. python实现进程通信_Python通过4种方式实现进程数据通信
  9. PC端动态视频背景引导页(非自适应)
  10. java ntpudpclient_使用NTP获取网络时间-----java