参考
在线资源
简介
.htaccess的特别说明
- 启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用 AllowOverride限制特定命令的使用
- 如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改 变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:
AccessFileName .config
- 一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。 有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不 是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方 法。.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配 置而又没有 root权限的情况下。如果服务器管理员不愿意频繁修改配置,则 可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上 运行了多个用户站点,而又希望用户可以自己改变配置的情况下。虽然如 此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess 文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。避 免使用.htaccess文件有两个主要原因,即性能和安全。
应用
自定义错误页
常见错误:
401 - Authorization Required 需要验证 400 - Bad request 错误请求 403 - Forbidden 禁止 500 - Internal Server Error 内部服务器错误 404 - Wrong page 找不到页面 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
在 .htaccess 文件中加入:
ErrorDocument 404 /notfound.html ErrorDocument 500 /errorpages/500.html
直截了当的做法:
ErrorDocument 401 "你没有权限访问该页面,请放弃!"
这里地址中的第一个“/”代表网站的“根”目录。
不显示目录列表
Options -Indexes
控制IP访问
阻止 XXX.XXX.XXX.XXX IP 访问!
deny from XXX.XXX.XXX.XXX
容许一个 IP 访问!
allow from XXX.XXX.XXX.XXX
阻止所有人访问当前目录(不会影响脚本程序访问):
deny from all
配置默认页面
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
重定向(重要)
.htaccess最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在 你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。
Redirect /location/from/root/file.ext http://www.othersite.com/new/file/location.xyz
可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为 olddirectory的目录,并且你已经在一个新网站 http://www.newsite.com/newdirectory/ 上建立了与上相同的文档,你可以将旧 目录下所有的文件做一次重定向而不必一一声明:
Redirect /olddirectory http://www.newsite.com/newdirectory
密码保护
利用.htaccess将一个目录加上密码保护分两个步骤。第一步是在你的.htaccess 文档里加上适当的几行代码,再将.htaccess文档放进你要保护的目录下:
AuthName "Section Name" AuthType Basic AuthUserFile /full/path/to/.htpasswd Require valid-user
目录的密码保护比.htaccess的其他功能要麻烦些,因为你必须同时创建一个包含 用户名和密码的文档,用于访问你的网站,相关信息(默认)位于一个名 为.htpasswd的文档里。像.htaccess一样,.htpasswd也是一个没有文件名且具有 8位扩展名的文档,可以放置在你网站里的任何地方(此时密码应加密),但建议 你将其保存在网站Web根目录外,这样通过网络就无法访问到它了。
创建好.htpasswd文档后(可以通过文字编辑器创建),下一步是输入用于访问网 站的用户名和密码,应为:
username:password
“password”的位置应该是加密过的密码。你可以通过几种方法来得到加密过的密 码。使用 htpasswd 工具可以很方便做到:
root@jianlee:~# htpasswd -c ylinux.htpasswd jianlee New password: Re-type new password: Adding password for user jianlee root@jianlee:~# cat ylinux.htpasswd jianlee:WnpWXxBfVyLsc
将上面的 ylinux.htpasswd 放到一个目录 /full/path/to/.htpasswd , 即可。
防止盗链
如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过 htaccess的指令来做到。所需要的指令如下:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif&line;jpg)$ - [F]
如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替: </example> RewriteEngine on RewriteCond %{ HTTP_REFERER } !^$ RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC] RewriteRule .(gif&line;jpg)$ http://www.mydomain.com/替代图片文件名 [R,L] </example>
