经常使用或者开发PHP程序的人应该对Apache的.htaccess(全名 Hypertext Access)配置文件并不陌生。它能通过简单的语句实现诸如权限审核、跳转、防盗链等强大的功能。Wordpress本身的自定义文章链接功能即是使用.htaccess规则来实现的。还有WP Super Cache等热门插件的一些功能,也往往需要修改.htaccess文件来实现。它对没有足够权限来修改Apache主机配置的虚拟主机用户来说是个很好的东西。

以下总结一些非常有用也很常用的.htaccess文件配置方法。希望对各位网站开发者、站长朋友有用。如果你有更好的规则,欢迎一起讨论。

1:图片、多媒体内容防盗链

网上文章一大抄,很多懒人自己并不像打字、搜集资料什么的,只想简单地CV来充实自己的网站。还毫不留情地引用你网站上的图片、多媒体资源。复制文字难以杜绝,那么只好让别人不那么容易直接引用自己网站上的图片吧。在你的网站根目录下建立.htaccess文件,写入以下内容:

Options +FollowSymlinks
#Protect against hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?wenzhu.org/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://wenzhu.org/img/backoff.gif[nc]

其中RewriteCond一行,可以多行复制,每行指定一个允许直接引用你网站上资源的网址。比如你想Google可以直接应用:RewriteCond %{HTTP_REFERER} !^http://www.google.com/ [nc].

其中的RewriteCond %{HTTP_REFERER} !^是必不可少的,在后面直接加域名皆可,http://www这些可以省略。

RewriteRule .*.(gif|jpg|png)这一行指定要反盗链的文件后缀,你可以添加其他后缀,用|隔开即可。$后面的地址是替代图片的地址,这也就是经常看到别人引用了网易等地方的图片,会显示“本图片只限在本站内使用”等信息,你可以自己制作一个放入自己的网站下。也可以引用其他的图片地址,比如百度的Logo地址,这样别人盗链后将显示百度的Logo。

2:防止危险访问

有些访问方式和企图是很危险的,因此最好禁止之:#Block bad bots

SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]

SetEnvIfNoCase user-Agent ^Java.* [NC,OR]

SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]

SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]

SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]

SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]

SetEnvIfNoCase user-Agent ^Zeus [NC]

<limit get=”" post=”" head=”">

Order Allow,Deny

Allow from all

Deny from env=bad_bot

</limit>

3:只让指定IP的用户访问特定目录

有时候你只想让某些特定IP来查看自己网站(或者某个目录),比如你在测试某个新网站,又不想在本地测试。这时候可以通过.htaccess来指定IP访问你的某个目录或者整站。规则如下:

ErrorDocument 403 http://www.domainname.com

Order deny,allow

Deny from all

Allow from 124.34.48.165

Allow from 102.54.68.123

它指定了两个IP能访问你的网站。其他人访问将给出一个403错误并将其定向到指定地址。

4:301跳转优化SEO

有时候我们不得不搬迁网站的内容,而搜索引擎更新的没那么快,引用了这一内容的其他人也没有得到通知。这时候别人通过旧的网址访问就会得到一个404找不到。影响用户体验也影响搜索引擎对你网站的印象。利用301跳转可以使内容平滑迁移。它的原理就是分析旧网址结构,如果符合规则中指定的,则将其定位到新地址:

Redirect 301 /d/file.html http://www.domainname.com/r/file.html

它就是将一个/d/file.html文件重定向到新的http://www.domainname.com/r/file.html上去。

5:自定义错误页面

好的错误页面可以带来更好的用户体验,让用户体会到你的细心。

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

这几行配置前的ErrorDocument 是不变的 401等数字是错误码,/error/401.php则是你自己定义的错误页面地址,是相对于.htaccess所在的目录的,可以自定义。

6:建立IP黑名单。

某个IP的坏蛋老是来捣乱?那么就直接禁掉它吧。

allow from all

deny from 124.232.131.20

deny from 124.232

写全IP地址就封一个IP,写不全就封锁IP段。例如上面的最后一句,生效后124.232.0.0~124.232.255.255的用户均不能访问(好残忍- -)。

7:不让别人直接下载你的网站资源

通常我们点击网站上一个文件链接的时候,浏览器会自动弹出下载对话框。我们可以通过.htaccess文件在自己网站上禁止下载对话框打开。

AddType application/octet-stream .pdf

AddType application/octet-stream .zip

AddType application/octet-stream .rar

一行一个文件后缀名。

8:禁止列出目录文件

有的Apche主机允许列出目录文件。这通常是很危险的事儿,除非你的这些目录是做下载用的。如果不是,我们可以自己禁止它:

Options All -Indexes

保险起见,还可以在每个目录下放一个空的index.htm(或者php、html等常见后缀),来防止目录列表。

9:移除网页后缀名

有些网页是直接将文件名也展现在地址栏中的,比如plugin.php,为了更友好一点,可以去掉这个.php后缀:

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

差不多就这些吧,更多的内容请参考Apache文档

这里相关的八卦不止此文哈....