.htaccess入门教程 及 apache中.htaccess文件的功能写法

.htaccess入门教程


Apache服务器的.htaccess是一个非常强大的分布式配置文件,学会使用.htaccess,对虚拟主机用户来说,可以实现众多的功能。这里有一篇很容易让人理解的.htaccess介绍,作为入门文章非常的适合。
第一节 简介

本文简单介绍了关于.htaccess文件及其功能的知识,可以用来优化您的网站(SEO优化等)。.htaccess是Apache的一个配置文件,用于在不重启服务器的情况下修改部分服务器设置参数。例如,最常用的功能是创建自定义的“404 错误”页面。.htaccess 使用起来也相当简单,只需要在网站根目录放置一个.htaccess的文件,添加几行代码就可以了。更加深入的学习请参见笔者写的另一篇文章《.htaccess rewrite 规则详细说明

  1. 我的主机是否支持.htaccess?
    理论上讲,所有Linux&Unxi下的Apache服务器均支持.htaccess设置。不过,最终决定权在于提供服务的空间商,你可以咨询空间商客服,或者自己测试一下,方法很简单,在网站根目录下的.htaccess文件中写入:

    //将所有请求都重定向到指定域名
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^.*$
    RewriteRule ^.*$ http://www.cnphp.info [R=301,L]

    如果重定向成功,恭喜,你的主机支持.htaccess设置

  2. 使用.htaccess能做什么?
    可以做很多事情啦,包括:
    • 文件夹密码保护
    • 用户自动重定向
    • 自定义错误页面
    • 改变你的文件扩展名
    • 封禁特定IP地址的用户
    • 只允许特定IP地址的用户
    • 禁止目录列表
    • 使用其他文件作为默认的index文件
  3. 如何自定义错误页面?
    首先,我想向大家介绍一下如何在.htaccess中设置自定义错误页面,做为一个入门的例子,相当简单。
    ErrorDocument HTTP响应代码 /file.html
    如果用户访问了一个不存在的页面,那么我可以把他转到一个页面,告诉他,这个页面不存在,这样作非常友好;同时,搜索引擎也很喜欢,对SEO很有帮助哦!
    ErrorDocument 404 /nofound.html
    将/notfound.html 编辑好放在根目录下就可以了,自己动手做好后试试看效果?
    常用的响应代码有:
    • 401 – Authorization Required 需要验证
    • 400 – Bad request 错误请求
    • 403 – Forbidden 禁止
    • 500 – Internal Server Error 内部服务器错误
    • 404 – Wrong page 找不到页面
第二节 .htaccess 命令
  1. 禁止目录列表
    如果目录下没有index(如:index.htm)文件,Apache默认情况下会显示该目录下所有文件的列表,这会给你的网站留下安全隐患。为避免这种情况出现,要么把所有目录都加上index文件(如果目录多,就很麻烦了)。可以在.htaccess使用如下指令,以阻止目录列表的显示,很方便吧 ^_^:
    Options -Indexes
  2. 阻止/允许特定的IP地址
    网站有时难免会遭到一些来意不明的用户侵扰,防范这些用户的最好办法之一就是禁止某些IP地址访问网站;或者,基于一些特殊原因,你可能只想允许某些特定 IP的用户可以访问你的网站(例如:只允许使用特定IP用户进入某个目录),或者想封禁某些特定的IP地址(例如:将未经IP授权的用户隔离于你的信息版面外)。当然,这只在你知道你想拦截的IP地址时才有用,然而现在网上的大多数用户都使用动态IP地址,所以这并不是限制使用的常用方法。
    在.htaccess中可以使用如下指令禁止一个IP地址访问:
    deny from 000.000.000.000
    这里的000.000.000.000是被禁止的IP地址,如果你只指明了其中的几个,则可以禁止整个网段的地址访问。如你输入”114.11.128.” ,则将禁止114.11.128.0~114.11.128.255的所有IP地址访问。
    那么如何允许一个IP地址访问网站呢?命令也很简单
    allow from 000.000.000.000
    被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样封禁整个网段。
    如果你想阻止所有人访问该目录,则可以使用:
    deny from all
    不过这并不影响脚本程序使用这个目录下的文档。
  3. 替换index文件
    也许你不想一直使用index.htm或index.html作为目录的索引文件。举例来说,如果你的站点使用PHP文件,你可能会想使用 index.php来作为该目录的索引文档。当然也不必局限于“index”文档,如果你愿意,使用.htaccess你甚至能够设置 foofoo.balh来作为你的索引文档!
    这些互为替换的索引文件可以排成一个列表,服务器会从左至右进行寻找,检查哪个文档在真实的目录中存在。如果一个也找不到,它将会把目录列表显示出来(除非你已经关闭了显示目录文件列表)。
    DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
  4. 重定向
    .htaccess最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现是很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:
    Redirect /location/from/root/file.ext

    http://www.othersite.com/new/file/location.xyz

    上述例子中,访问在root目录下的名为oldfile.html可以键入:

    /oldfile.html
    访问一个旧次级目录中的文件可以键入:
    /old/oldfile.html
    你也可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,并且你已经在一个新网站 http://www.newsite.com/newdirectory/上建立了与上相同的文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:
    Redirect /olddirectory http://www.newsite.com/newdirectory
    这样,任何指向到站点中/olddirectory目录的请求都将被重新指向新的站点,包括附加的额外URL信息。例如有人键入:

    http://www.youroldsite.com/olddirecotry/oldfiles/images/image.gif

    请求将被重定向到:

    http://www.newsite.com/newdirectory/oldfiles/images/image.gif

    如果正确使用,此功能将极其强大。

第三节 密码保护

尽管有各种各样的.htaccess用法,个人认为最有用之一就是用它来设置网站目录的密码保护。尽管JavaScrip等也能做到,但只有.htaccess具有完美的安全性(即访问者必须知晓密码才可以访问目录,并且绝无“后门”可走)。

  1. 使用.htaccess进行密码保护
    利用.htaccess将一个目录加上密码保护分两个步骤。第一步是在你的.htaccess文件中插入如下代码,再将.htaccess文档放进你要保护的目录下:

    AuthName “Section Name” #用户名
    AuthType Basic #认证方式
    AuthUserFile /full/path/to/.htpasswd #密码文件
    Require valid-user

  2. 使用.htpasswd存放用户名和密码
    目录的密码保护比.htaccess的其他功能要麻烦些,因为你必须同时创建一个包含用户名和密码的文档,用于访问你的网站,相关信息(默认)位于一个名为.htpasswd的文档里。像.htaccess一样,.htpasswd也是一个没有文件名且具有8位扩展名的文档,可以放置在你网站里的任何地方(此时密码应加密),但建议你将其保存在网站Web根目录外,这样通过网络就无法访问到它了。
  3. 设定用户名和密码
    创建.htpasswd的方法有两种。
    一种使用命令行工具:htpasswd,对于Linux系统一般放在/usr/bin下,Windows下放在Apache的Bin目录下(htpasswd.exe),命令如下(我只列出常用的几个选项):

    htpasswd -c passwordfile username
    htpasswd -b passwordfile username password
    htpasswd -D passwordfile username
    -c 创建一个密码文件,并增加一个用户
    -b 增加一个用户
    -D 删除一个用户

    另一种方式是手动创建:创建好.htpasswd文档后(可以通过文字编辑器创建),下一步是输入用于访问网站的用户名和密码,应为:
    username:password
    “password”的位置应该是加密过的密码。提供一个很不错的username/password加密服务网站KxS,可以输入用户名及密码,然后生成正确格式的密码。
    对于多用户,你只需要在.htpasswd文档中新增同样格式的一行即可。另外还有一些免费的脚本程序可以方便地管理.htpasswd文档,可以自动新增/移除用户等。

  4. 如何访问有密码保护的网站
    当你试图访问被.htaccess密码保护的目录时,你的浏览器会弹出标准的username/password对话窗口。如果你不喜欢这种方式,有些脚本程序可以允许你在页面内嵌入username/password输入框来进行认证,你也可以在浏览器的URL框内以以下方式输入用户名和密码(未加密的):http://username:password@www.website.com/directory/




apache中.htaccess文件的功能写法

apache中.htaccess文件的功能写法

- .htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

- .htaccess必须以ASCII模式上传,最好将其权限设置为644。

错误文档的定位

常用的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常见的服务器错误返回代码:
500 Internal Server Error

用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:

ErrorDocument 错误代码 /目录名/文件名.扩展名

如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:

ErrorDocument 401 "<body bgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>"

文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权用户文档,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)

require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user)

注,括号部分为学习时候自己添加的注释

拒绝来自某个IP的访问

如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。

例如:


order allow,deny
deny from 210.21.112.43
deny from 219.146.95
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.146.95.0~219.146.95.255

想要拒绝所有人?用deny from all好了。不止用IP,也可以用域名来设定。

保护.htaccess文档

在使用.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,.htaccess本身也能做到,只需加入如下的指令:

<Files .htaccess>
order allow,deny
deny from all
</Files>

URL转向

我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:

Redirect /旧目录/旧文档名 新文档的地址

或者整个目录的转向:

Redirect 旧目录 新目录

改变缺省的首页文件

一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也可以列出多个,顺序表明它们之间的优先级别,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm

防止盗链

如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。

所需要的指令如下:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www.)?phpv.net/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ http://www.phpv.net/img_PageNotFound.gif [R,L]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值