HostMonster:.htaccess指南
出自美国主机知识库
.htaccess指南
第一部分-介绍
介绍
在这篇指南中,您将了解.htaccess文件以及其提升您的站点的威力。虽然htaccess只是一个文件,但是它可以改变服务器设置并允许你做许多不同的事情,最受欢迎的就是定制自己的 404错误提示页面。.htaccess使用起来很容易,仅仅是一些简单的说明组成的文本文件。
我的主机支持吗?
这可能是最难给出简单答案的问题了,很多主机支持.htaccess但是不说明,另一些主机有这个性能,但是却不允许他们的用户使用.htaccess文件。一般说来,如果您的服务器运行的是Unix 或者 Linux操作系统,或者其它任何版本的Apache网络服务器,都会支持.htaccess文件,尽管您的主机可能不允许您使用。
一个很明显的标志是,如果你的主机支持文件夹密码保护,那么就是允许.htaccess文件的。因为这个功能需要.htaccess为前提(虽然在一些很少的情况下提供密码保护但是却不允许使用.htaccess)。如果你不确定,最好的办法就是,上传自己的.htaccess文件看是否工作或者直接发e-mail给网络服务器提供直接问他们。
我能做什么?
你也许疑惑.htaccess可以做什么,或者你读过它的一些用处说明之后仍然不知道你实际可以应用到哪些。
.htaccess可以胜任的事情范围非常广,包括:文件夹密码保护,自动重新定向用户,定制错误提示页面,更改文件扩展名,禁止特定ip用户访问,只允许特定ip用户访问,阻止对目录进行列表,使用一个不同的文件作为index文件。
创建一个.htaccess文件
创建.htaccess文件会给你带来一些问题。写文件很容易,你只要在一个文本编辑器(如notepad)输入适当的代码就可以了。但是当保存文件的时候将会遇到问题。
因为.htaccess文件是一个奇异的文件类型(文件通常没有名字而只有一个8字母的扩展名),一些操作系统不支持这种文件(如Windows 3.1)。对于绝大多数操作系统,保存文件只需要输入:
".htaccess"
(包括引用)。如果这样无效,你必须把它命名为别的东西(例如.htaccess.txt)再上传到服务器,之后再使用FTP工具来修改。
警告
在使用.htaccess之前,我要给你一些警告。虽然在服务器上使用.htaccess几乎不可能给你造成问题(当然要是出了问题自然就不是这样),如果你正在使用Microsoft FrontPage Extensions,就要十分谨慎了。FrontPage Extensions使用.htaccess文件,所以你不应该把自己的信息编辑进去。当然如果你想这样做(不推荐,但不是不可以),你应该首先从服务器现在.htaccess文件(如果该文件存在),并且把代码插入文件开头。
自定义错误提示页面
我将会提到的htaccess文件的第一个应用就是自定义错误提示页面。这将允许你拥有自己的个人的错误提示页面(例如文件未找到),而不是使用主机的错误提示页面甚至没有。这会使您的站点在不太可靠的错误事件面前看起来更专业。同样还允许您创建脚本以通知发生的错误(例如我在Free Webmaster Help上使用一个PHP脚本,如果有页面未找到会自动发送e-mail给我)。
只要你知道数字代号,所有的错误都可以使用自制错误提示页面(例如404表示页面未找到),只要在您的.htaccess文件中增加下面这行:
ErrorDocument errornumber /file.html
例如,如果我的站点的根目录里有notfound.html这个文件,而且我想用它作为404错误提示,只要这样写:
ErrorDocument 404 /notfound.html
如果这个文件不在根目录里,你就需要协商路径:
ErrorDocument 500 /errorpages/500.html
这里是一些常见错误:
401 - Authorization Required (需要授权)
400 - Bad request (错误请求)
403 - Forbidden (访问禁止)
500 - Internal Server Error (服务器内部错误)
404 - Wrong page (错误页面)
接下来,你要做的是创建一个错误发生时需要显示的页面,并把它和.htaccess文件一起上载。
第二部分-.htaccess命令
介紹
在上面的部分我向您介绍了.htaccess及其一些特征。下面这个部分我将会向您展示如何使用.htaccess实现其中一些。
防止目录索引被看到
有些时候,由于这样那样的原因,你的目录里没有index(索引)文件。这必然意味着,如果有人在浏览器里输入了目录名称,那么其中的文件将会被详细列出。这对您的站点的安全是个风险。
为了阻止上述的发生(不需要创建很多新的‘index’文件),你可以在.htaccess文件里输入下面的命令:
Options –Indexes
禁止/允许特定IP地址
在一些情形下,你可能只希望某些特定IP地址的用户能够访问您的站点(例如,只允许使用特定ISP的用户进入一个特定的目录)或者你想禁止某些IP地址(例如,把扰乱的成员从信息栏剔出)。当然,你必须知道想禁止的IP的才行,并且现在internet上的大部分人使用的是动态分配的IP,所以这通常不是限制的最好办法。
你可以使用下面的命令阻挡IP:
deny from 000.000.000.000
这里000.000.000.000是IP地址,如果你只指定了这些数字群中的1个或2个,那么将阻挡整个范围里的IP。
你可以使用下面的命令允许IP:
allow from 000.000.000.000
同样这里000.000.000.000是iP地址。如果你只指定了这些数字群中的1个或2个,那么将允许整个范围里的IP访问。
如果你想阻止任何人访问一个目录,使用这句:
deny from all
但这仍然允许脚本使用目录里的文件。
重定向
.htaccess文件最有用的功能之一就是重新定向请求到不同的文件,或者是同一个服务器上,或者是完全不同的另一个站点。这非常有用,即使你改变了一个文件的名字,用户仍然能够找到该文件。另一个用处(我认为很有用)是重新定向到一个长url地址,例如在我的时事通讯里我可以为我加入的链接使用很短的URL。下面是重新定向到一个特定文件的方法:
Redirect /location/from/root/file.ext
http://www.othersite.com/new/file/location.xyz
在上面的例子中,根目录里的一个名为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文件有许多用处,迄今为止最受欢迎,也是最有用的可能是值得信赖的站点目录的密码保护功能。虽然JavaScript(Java脚本)等也有这个功能,只有.htaccess能做到完全的安全性(进入目录必须知道密码,没有’后门’)。
.htaccess文件
使用.htaccess文件给目录增加密码保护功能需要2步。首先,要向你想要进行密码保护的目录里的.htaccess文件添加适当的几行代码,该目录下的所有东西都会被密码保护。
AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user
在应用到您的站点时需要做一些变动。您需要将"Section Name"替换成站点的被保护部分,例如"Members Area"。
/full/parth/to/.htpasswd需要变化以将整个服务器的路径映射到.htpasswd file(更多介绍在后面)。如果你不知道网络空间的完整路径,联系系统管理员获取更多细节。
.htpasswd文件
对目录进行密码保护要比.htaccess的其他功能需要多做一点工作,因为你必须创建一个文件包含可访问站点的帐号和密码。这些需要放在一个默认名称为.htpasswd的文件里。和.htaccess文件一样,该文件没有名字只有8字母扩展。它可以放在站点里的任何地方(因为密码加密了),但是建议放在网络服务器根目录外面,这样就不可能从网络访问该文件了。
输入用户名和密码
一旦你创建了自己的.htpasswd文件(在一个标准的文版编辑器里可以做到),你必须输入帐号和密码才能访问该站点。
按照下面的格式输入:
username:password(用户名:密码)
密码是加密格式。为了加密密码,你要么使用网络上已经写好的可用脚本,要么自己写。KxS站点(http://www.kxs.net/support/htaccess_pw.html)提供一个很好的帐号/密码服务,允许您输入帐号密码,并且以正确的格式显示出来。
对多用户,只要在.htpasswd文件的开头以同样的格式增加几行就可以了。甚至有免费的脚本来管理.htpasswd文件,例如可以自动添加或删除用户。
访问站点
当你尝试访问一个受.htpasswd保护的站点时,浏览器将会弹出一个标准的用户名/密码对话框。如果你不喜欢这种方式,有一些脚本允许你在站点插入帐号/密码框进行验证。你同样可以用下面的方式在URL中发送用户名和密码(非加密方式):
http://username:password@www.website.com/directory/
概要
.htaccess是站长们最有用的文件之一,它拥有多种不同的功能可以帮助我们节约时间 和提高站点的安全性。