注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

山林客

简单不一定幸福,但幸福其实可以很简单。

 
 
 

日志

 
 
关于我

2004年毕业于中山大学,毕业后专注于网站开发和网络工程技术。先后取得SCWCD、CCNP认证,对Asp/Java有丰富的开发经验,对网络工程也有较深的研究。真诚欢迎大家多多指教、多多指点、多多指正,共同分享IT道路和人生道路上的喜怒哀乐。

网易考拉推荐

.htaccess典型用法  

2009-02-25 22:57:11|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用Apache搭建PHP环境,可以利用.htaccess文件实现很多有用的功能。这是一个文件名称很特殊的文件,名称就是“.htaccess”,没有文件名,只有一个扩展名,把它放到哪个目录,它就会在哪个目录生效,而我们如果要覆盖父目录的设置,只需要在子目录同样建一个这样的文件就可以了。

这个文件并不复杂,就是一些代码,网上都有例子,但这些简单的代码却可以实现一些靠PHP难以实现的功能。

准备工作

首先,我们要修改Apache的httpd.conf文件

首先确保mod_rewrite.so被加载

LoadModule rewrite_module modules/mod_rewrite.so

然后,查找“AllowOverride none”,将其替换为“AllowOverride All”

完成上述步骤之后,接下来就可以体验.htaccess文件的功能了。

1. 利用.htaccess保护目录

(1)首先要生成一个记录授权用户名和密码的文件

进入Apache的bin目录,可以看到里面有一个“htpasswd.exe”程序,我们需要用到这个程序。在命令行执行下述命令:

I:\Apache\bin>htpasswd -cb pwd.txt ah_bill 123456
这里的用户名是“ah_bill”,密码是“123456”

执行完这个命令之后,在I:\Apache\bin目录下就会看到一个名称为pwd.txt的文件,当然,你还可以使用其他扩展名。

生成的文件内容如下:

ah_bill:$apr1$qonodlBy$bAMEgwFSZ/CbSBfR1hR8d/

(2)编写名称为“.htaccess”的文件,打开记事本输入以下内容,然后保存为“.htaccess”,在保存的时候注意选择所有文件:

AuthUserFile I:\Apache\bin\pwd.txt
AuthName "Secret Area"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

.htaccess典型用法 - 瑞志.net - 山林客

注意我们在引用pwd.txt的时候必须要使用绝对文件名,如果你是在虚拟主机,请首先探测一下虚拟主机的物理路径。

将这个文件放到我们要保护的目录中,例如网站的“/lyb2”目录,则我们输入以下路径的时候会看到以下画面:

.htaccess典型用法 - 瑞志.net - 山林客

我们输入用户名“ah_bill”,密码“123456”则可以访问http://localhost/lyb2目录,如果输入错误,则提示:

Authorization Required

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

 

在使用的时候还要注意一点,虽然我们看密码好像是加密的,但实际上如果其他人直接可以下载到这个文件,那还是可以破译密码的。所以,应该将这个文件放在网站目录之外的其他目录。如果在虚拟主机,我们可以在.htaccess中加上以下内容来防止该文件被访问:

<Files pwd.txt>
order allow,deny
deny from all
</Files>

2. 利用.htaccess防止盗链
我们在.htaccess中输入以下内容,并把它放到根目录下

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://localhost$ [NC]
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://localhost$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$
http://localhost/errors/err.html [R,NC]

 

这里的前面4行定义了我们授权的访问地址,当然,实际应用的时候应该是http://www.abc.com的形式。最后一行是我们要防止盗链的文件,后面的一个URL是当我们访问这些文件的时候的跳转路径。我们看一下实际效果:

输入:http://localhost/lyb2/ 

.htaccess典型用法 - 瑞志.net - 山林客

输入:http://127.0.0.1/lyb2/ 这时侯,注意我们用的是127.0.0.1访问而不是localhost,我们看到网页中的图片都失效了。

.htaccess典型用法 - 瑞志.net - 山林客

假设我们直接输入一个图片的地址:http://127.0.0.1/lyb2/upfile/IMG-0uG60fZ72B.jpg

我们会发现它会跳转到一个我们先前定义的那个页面而不是显示该图片。

 

3. 利用.htaccess显示友好出错提示

 当我们访问的网页不存在的时候,网页会返回一个404错误,如果我们要用一个自己定义的页面来替换掉那个丑陋的出错界面,可以在.htaccess中输入以下内容:

ErrorDocument 403 http://www.abc.com/error.html
ErrorDocument 404 http://www.abc.com/error.html

ErrorDocument 500 http://www.abc.com/error.html
其他类型的错误页面也可以使用这种方式来定义

在这里列出的是ah_bill认为比较能体现.htaccess优势的例子,.htaccess还可以实现很多其他功能,有兴趣的朋友可以到网上搜索一下。

不过这里也存在一定的限制,正如前面所说,我们必须要修改apache的AllowOverride,而虚拟主机并不允许我们去修改,很多服务提供商出于安全的考虑,并不支持.htaccess的使用。

  评论这张
 
阅读(2297)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018