这里分三步来简述.htaccess文件的使用。具体的你可以参考Apache网站上的相关文档。
第一步:使用背景读完这篇文章,您可以知道.htaccess是干什么用的,且您会赞叹它神奇般的功能,四两拨斤。在Web领域里,看似.htaccess只不过是一个普通的文本文件,但能实现如让用户自定义404出错页等。且看起来,它并不难上手,值得一试。
我的主机支持.htaccess吗?因事而异。很多主机商不会告诉您他们正在使用着.htaccess,或者有的主机商不允许用户在自己所属的目录里放置.htaccess文件。不过,可以告诉您,绝大多数使用Aapche作为Web服务的Unix或Linux供应商,支持用户拥有或更改.
htaccess文件。
通常情况下,如果您的主机提供了基于密码保护的文件夹功能时,也肯定了主机商在采用了.htaccess文件,尽管他们不一定让您拥有自定义的.
htaccess文件。保守的方法是自己上传一个.htaccess文件,且看这个文件是否生效。当然,直接咨询主机服务商也是一个好办法。
它能用来干什么?也许您之前已经听说过有关.htaccess的功用了。下面是一些简单的举例:为文件夹设置访问密码、页面自动跳转、自定义出错页、改变文件的扩展名、禁止或允许特定IP地址客户的访问、禁止对目录里的文件进行枚举或使用不同于index.html的默认页。
怎么新建一个.htaccess文件?很简单,用文本编辑器,如记事本新建一个文本,写上合适的内容,用“.htaccess”作为文件名保存。可能您会遇到点小问题,如早期的Windows3.1系统并不支持8个字符的扩展名。不过,现在多数人正在使用的系统都支持。但在某些应用情况下,还是建议你考虑到可能出现的意外情况,如同时使用了Microsfot的FrontPage扩展时,就会变得复杂一些,并不是说原有的.htaccess失效那么简单,可能出现的情况是,FrontPage扩展正在使用着该文件,而你在此时并不能编辑该文件。建议的方法是,先从服务器上下载该文件,将您新添加的内容追加到最前面,再上传回去。
自定义出错页第一个.htaccess的功能介绍是如何自定义出错页。个性化的http访问出错页,会令您的网站显得别出一格,与主机供应商提供的,统一的出错页所收到的效果要好得多。当然,你也可以使用一些免费的脚本来提醒您客户遇到了点小麻烦,例如说当客户访问到一个不存在的页面的同时,作为网站负责人的您也会收到一个报告此出错的邮件,以便更好地提高网站质量。
典型的,如编码404代表着“页面不存在”,你可以自定义该出错页,只要你知道这个编码。您可以在.htaccess添加以下格式的文字:
ErrorDocument errornumber /file.html
如上例的:
ErrorDocument 404 /notfound.html
如果notfound.html文件并不您web根目录下,您可以将相应的文件路径补上,如:
ErrorDocument 500 /errorpages/500.html
这里是一些常见的错误编码页:
- 400 非法的请求
- 401 需要验证
- 403 禁止访问
- 404 页面不存在
- 500 运行出错
剩下的,就是创建您自定义的出错页面内容了。
第二步: .htaccess命令在上一步中,我们知道了.htaccess所能达到的一些功能。这一步,我们重点说明是怎么实现这些功能的。
不自动枚举某个目录里的所有文件因为某些原因,某些目录中并不含有索引页,这时,如果客户访问该目录名,可能会默认地枚举该目录下的所有文件,访问者可以看到该目录下的所有文件名及时间等属性。这可能会增加风险。
您可不必繁琐为每个目录创建索引页的来防止自动枚举,只需在相应的目录下的.htaccess文件中增加这一行:
Options -Indexes
禁止或允许特定的IP地址访问在特定的场合里,可能你会需要屏蔽来自某些IP地址的访问,或只允许某些地址的访问(例如结合成员管理等)。在您确定对方的访问源地址后,可以简单地在.htaccess文件里作此设置。如:
屏蔽某IP的来访:
deny from 000.000.000.000
在这里,000.000.000.000是一组(个)IP地址,如果你只给出已知的一或两组,那么属于该组的IP地址会全部被屏蔽。是大范围的。
对应地,您可以使用allow命令来替换deny来允许特定的IP(组)的访问。
选择性的索引页因为多数Web服务器是支持将index.htm或index.html作为默认的索引页,假如您把目录中index.php文件作为默认页的话,您可以使用.htaccess来做到,当然并不仅限于index文件,您可以发挥您的想象力,只要遵守.htaccess的行事规律就可以了。.
htacess是从左到右优先读取选择的。如:
DirectoryIndex index.html index.php
即当访问者浏览这个目录时,Web首先尝试显示index.html,如果index.html不存在,再找index.php,如果连index.php文件都没有,且您没有关闭自动枚举目录文件的功能时,Web会返回该目录下的所有文件列表。
网页跳转在.htaccess被多次提及的应用之一是,页面跳转。这不仅可以在本机中实现,还可以在不同的站点中实现跳转。这个功能对迁移文件后,但访问者仍只记得原地址时特别有用。还有一个举例是将URL地址变得短,不会太长。如:
Redirect /location/from/root/files.txt !http://www.othersite.com/new/file/location.xyz
在上例中,跳转前的访问路径是:/oldfile.html
但跳转后的访问路径是:/old/oldfile.html
当然除了可以对文件进行跳转,也可以对目录进行类似的操作。只要您使用得当,可以发现这很有益处的。
第三步:对目录设置密码很多人对通过.htaccess文件为目录设置密码有深刻的印象,因为显得省时省力。
设置访问密码检查为目录设置访问密码有两部分,一个是在.htaccess文件中添加信息,让Web服务器询问访问者的密码,第二部分是密码的存放文件.htpasswd,使得Web服务器可以核对访问者的密码。如下例:
AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user
当然,如果您要用,记得更改适合您的信息,如您想为只有会员才能访问的目录,更改显示窗口的标题为“会员俱乐部”。
这/full/path/to/.htpasswd路径要更改成您自己的.htpasswd所在的路径。如果不知道文件的绝对路径,可询问主机的客服。
创建.htpasswd文件文件.htaccess为您开好了头,剩余的就交给.htpasswd来做吧。默认情况下,多数人会选择.htpasswd作为存储用户名及密码的文件名。因为含有敏感的信息,建议将该文件放置在不能被web用户访问到的地方。
添加用户及密码当您的.htpasswd文件创建好之后,接下去做的,就是在该文件中添加可接受访问的用户名及密码了。建议是将密码进行转换或加密,以防止被直接读取。格式如下:
username:password
KxS站点提供了在线生成转换后的密码。
如果想添加不止一个用户及密码,请保持上面的格式,在新起的一行中添加新的就可以了。当然,互联网上有不少的站点提供了相应的脚本来帮您完成一些琐碎的操作,如自动添加或删除等。
如何通过密码访问呢?
当一个目录被设置为凭密码访问时,在浏览器输入该目录的路径时,会弹出一个对话窗口,以便用户输入密码等。当然,如果您不想弹出窗口的形式,也可以使用脚本帮您完成。您也可以直接将用户名及密码添加在URL中,如:
http://username:password@www.website.com/directory/
总结很多网站管理员都有使用.htaccess来实现某些功能需求,因为使用.htaccess文件是一件省时,且在一定程度上可以增强安全性的设置。