`
天梯梦
  • 浏览: 13732039 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

5个常用的htaccess技巧

阅读更多

本文将向大家介绍几个在web应用程序上比较实用的htaccess 技巧。

准备工作

Htaccess 文件是Apache HTTP web服务器的纯文本配置文件。无需访问httpd.conf 文件,用户就可以设置目录选项。因此,要求你的服务器使用Apache,并且主机也支持htaccess 文件(大多数主机都支持)。

1. 防止盗链

盗链 也叫内嵌链接,是指一个网站的链接直接导向另一个网站上的对象。这会给另一个网站造成带宽和流量的损失。对于提供大量图片的站点来说,这个问题就比较严重。 使用htaccess可以解决这个问题。

 

ShapelessMass.com
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

分享到:
评论

相关推荐

    五个htaccess文件的常用技巧.docx

    .htaccess(分布式配置文件)是Apache服务器中的一个配置文件,它允许用户通过在网站根目录下创建此文件,对网站进行一些定制化的设置,而无需直接修改服务器的主配置文件。这使得网站管理员或开发者可以在不受...

    apache .htaccess文件详解和配置技巧总结

    这篇文章主要涵盖了 .htaccess 文件的基础知识、启用方法、访问控制、URL 重写、错误页面配置以及一些常用的命令和配置技巧。 1. **.htaccess 基本作用**: .htaccess 是一个纯文本文件,用于存放Apache服务器的...

    htaccess 防盗链,防止目录浏览等10大技巧

    Apache服务器上的`....以上10个技巧都是`.htaccess`文件在实际应用中的常见用法,可以帮助优化网站性能、提升安全性以及改善用户体验。如果你在使用Apache服务器,了解和掌握这些技巧对管理和维护网站至关重要。

    apache和htaccess知识总结

    而`.htaccess`(分布式配置文件)是Apache服务器中的一个核心特性,允许用户在网站的根目录下或子目录中自定义配置,实现对Web服务器行为的精细控制,无需修改全局的服务器配置文件。 本文将围绕Apache和`.htaccess...

    25个Apache性能优化技巧推荐

    本文将详细介绍25个实用的Apache性能优化技巧,帮助您提升服务器效率。 #### 二、性能优化技巧详解 ##### 1. **启用gzip压缩** - **概述**:通过启用`mod_gzip`或`mod_deflate`模块,可以显著减小HTTP响应体大小...

    分享和记录常见的php面试题和面试技巧.zip

    - URL重写与路由:理解mod_rewrite和.htaccess文件,以及Laravel或Symfony框架中的路由机制。 3. **PHP数据库操作**: - PDO(PHP Data Objects):安全连接MySQL或其他数据库,预处理语句,事务处理。 - MySQLi...

    php使用技巧,php使用技巧,php使用技巧,php使用技巧,

    使用`foreach`循环遍历数组是最常见的操作,同时`array_column`和`array_filter`也常用于数据处理。 4. **字符串处理**:PHP中的`str_replace`、`strstr`、`strpos`和`substr`等函数是处理字符串的常用工具。此外,...

    URL重写URL重写

    在本主题中,我们将深入探讨URL重写的概念、原理以及在实际应用中的常见方法。 一、URL重写概念 URL(统一资源定位符)是互联网上每个资源的唯一地址,而URL重写则是通过服务器配置或者应用程序代码来改变用户在...

    基于PHP的admin5php论坛源码.zip

    【标题】"基于PHP的admin5php论坛源码"揭示了这个压缩包包含的是一个使用PHP编程语言开发的论坛系统源代码。PHP是一种广泛应用于Web开发的开源脚本语言,尤其适合于动态网站内容的创建。它允许开发者在服务器端执行...

    基于PHP的常用汉字笔顺查询系统源码.zip

    【标题】"基于PHP的常用汉字笔顺查询系统源码"是一个使用PHP编程语言开发的软件项目,旨在提供一个能够查询汉字笔顺的在线平台。这个系统允许用户输入汉字,然后展示该汉字的正确笔画顺序,帮助学习者更好地理解和...

    供新手学习的thinkphp框架留言板

    4. `.htaccess`:Apache服务器的重写规则,用于URL美化。 5. `Config`:配置文件,定义应用的配置信息。 6. `Index.php`:入口文件,用于启动ThinkPHP框架。 7. `Database.sql`:可能包含初始数据库结构和测试数据的...

    SQL靶场资源包,搭建靶场需要

    5. `SQL Injections-1.mm`, `SQL Injections-3.mm`:这些可能是MindMap格式的文件,详细列出了SQL注入的不同类型、步骤、技巧或者示例,帮助用户理解和学习SQL注入的各种方法。 要搭建和使用这个SQL靶场资源包,你...

    简绘AI问答mj绘图一体式系统源码 ai绘画

    5. **SD绘图接口**:SD(Simple Drawing)绘图接口同样是一个新增功能,可能是指用于简单图形绘制的接口,可能适用于快速原型设计或教育用途,提供易于理解和操作的绘图工具。 6. **源码**:源码是程序的原始编写...

    Apache资料用户认证资料

    `.htaccess`文件是服务器上的一个配置文件,允许我们在特定目录级别设置访问控制。`.htpasswd`文件则存储了用户的用户名和加密后的密码,每行对应一个用户。 三、创建和管理用户 要添加新用户,我们需要使用`...

    PHP实例开发源码—OneHeart PHP.zip

    这个项目可能是为了展示PHP在实际开发中的应用,或者是教学目的,帮助开发者理解PHP编程技巧和项目构建流程。 【描述】描述简单明了,"PHP实例开发源码—OneHeart PHP.zip",表明这是一份以PHP编写的代码实例,已...

Global site tag (gtag.js) - Google Analytics