Posts Tagged ‘.htaccess’

.htaccess 使用详解

Thursday, June 15th, 2006

.htaccess可以做大量范围的事情,包括:文件夹密码保护、用户自动重新指向、自定义错误页面、变更你的文件扩展名、屏蔽特定的用户ip地址、只允许特定的ip地址、停止目录表以及使用其他文件作为index文件,等等……

1. introduction 介绍
文件名 .htaccess 属性 644 (rw-r–r–)
htaccess会影响它所在目录下的所有子目录
注意大多数内容都要求保持在一行之内,不要换行,否则会引起错误

2. error documents 错误文档
official document: errordocument directive
errordocument code document
例子
errordocument 400 /errors/badrequest.html
errordocument 404 http://yoursite/errors/notfound.html
errordocument 401 “authorization required”

more..

4. enabling ssi via htaccess 通过htaccess允许ssi(server side including)功能
addtype text/html .shtml
addhandler server-parsed .shtml
options indexes followsymlinks includes
directoryindex index.shtml index.html

5. blocking users by ip 根据ip阻止用户访问
order allow,deny
deny from 123.45.6.7
deny from 12.34.5. (整个c类地址)
allow from all

6. blocking users/sites by referrer 根据referrer阻止用户/站点访问
需要mod_rewrite模块
例1. 阻止单一referrer: badsite.com
rewriteengine on
# options +followsymlinks
rewritecond %{http_referer} badsite\.com [nc]
rewriterule .* - [f]
例2. 阻止多个referrer: badsite1.com, badsite2.com
rewriteengine on
# options +followsymlinks
rewritecond %{http_referer} badsite1\.com [nc,or]
rewritecond %{http_referer} badsite2\.com
rewriterule .* - [f]
[nc] - 大小写不敏感(case-insensite)
[f] - 403 forbidden
注意以上代码注释掉了”options +followsymlinks”这个语句。如果服务器未在 httpd.conf 的 段落设置 followsymlinks, 则需要加上这句,否则会得到”500 internal server error”错误。

7. blocking bad bots and site rippers (aka offline browsers) 阻止坏爬虫和离线浏览器
需要mod_rewrite模块
坏爬虫? 比如一些抓垃圾email地址的爬虫和不遵守robots.txt的爬虫(如baidu?)
可以根据 http_user_agent 来判断它们
(但是还有更无耻的如”中搜 zhongsou.com”之流把自己的agent设置为 “mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)” 太流氓了,就无能为力了)
rewriteengine on
rewritecond %{http_user_agent} ^blackwidow [or]
rewritecond %{http_user_agent} ^bot\ mailto:craftbot@yahoo.com [or]
rewritecond %{http_user_agent} ^chinaclaw [or]
rewritecond %{http_user_agent} ^custo [or]
rewritecond %{http_user_agent} ^disco [or]
rewritecond %{http_user_agent} ^download\ demon [or]
rewritecond %{http_user_agent} ^ecatch [or]
rewritecond %{http_user_agent} ^eirgrabber [or]
rewritecond %{http_user_agent} ^emailsiphon [or]
rewritecond %{http_user_agent} ^emailwolf [or]
rewritecond %{http_user_agent} ^express\ webpictures [or]
rewritecond %{http_user_agent} ^extractorpro [or]
rewritecond %{http_user_agent} ^eyenetie [or]
rewritecond %{http_user_agent} ^flashget [or]
rewritecond %{http_user_agent} ^getright [or]
rewritecond %{http_user_agent} ^getweb! [or]
rewritecond %{http_user_agent} ^go!zilla [or]
rewritecond %{http_user_agent} ^go-ahead-got-it [or]
rewritecond %{http_user_agent} ^grabnet [or]
rewritecond %{http_user_agent} ^grafula [or]
rewritecond %{http_user_agent} ^hmview [or]
rewritecond %{http_user_agent} httrack [nc,or]
rewritecond %{http_user_agent} ^image\ stripper [or]
rewritecond %{http_user_agent} ^image\ sucker [or]
rewritecond %{http_user_agent} indy\ library [nc,or]
rewritecond %{http_user_agent} ^interget [or]
rewritecond %{http_user_agent} ^internet\ ninja [or]
rewritecond %{http_user_agent} ^jetcar [or]
rewritecond %{http_user_agent} ^joc\ web\ spider [or]
rewritecond %{http_user_agent} ^larbin [or]
rewritecond %{http_user_agent} ^leechftp [or]
rewritecond %{http_user_agent} ^mass\ downloader [or]
rewritecond %{http_user_agent} ^midown\ tool [or]
rewritecond %{http_user_agent} ^mister\ pix [or]
rewritecond %{http_user_agent} ^navroad [or]
rewritecond %{http_user_agent} ^nearsite [or]
rewritecond %{http_user_agent} ^netants [or]
rewritecond %{http_user_agent} ^netspider [or]
rewritecond %{http_user_agent} ^net\ vampire [or]
rewritecond %{http_user_agent} ^netzip [or]
rewritecond %{http_user_agent} ^octopus [or]
rewritecond %{http_user_agent} ^offline\ explorer [or]
rewritecond %{http_user_agent} ^offline\ navigator [or]
rewritecond %{http_user_agent} ^pagegrabber [or]
rewritecond %{http_user_agent} ^papa\ foto [or]
rewritecond %{http_user_agent} ^pavuk [or]
rewritecond %{http_user_agent} ^pcbrowser [or]
rewritecond %{http_user_agent} ^realdownload [or]
rewritecond %{http_user_agent} ^reget [or]
rewritecond %{http_user_agent} ^sitesnagger [or]
rewritecond %{http_user_agent} ^smartdownload [or]
rewritecond %{http_user_agent} ^superbot [or]
rewritecond %{http_user_agent} ^superhttp [or]
rewritecond %{http_user_agent} ^surfbot [or]
rewritecond %{http_user_agent} ^takeout [or]
rewritecond %{http_user_agent} ^teleport\ pro [or]
rewritecond %{http_user_agent} ^voideye [or]
rewritecond %{http_user_agent} ^web\ image\ collector [or]
rewritecond %{http_user_agent} ^web\ sucker [or]
rewritecond %{http_user_agent} ^webauto [or]
rewritecond %{http_user_agent} ^webcopier [or]
rewritecond %{http_user_agent} ^webfetch [or]
rewritecond %{http_user_agent} ^webgo\ is [or]
rewritecond %{http_user_agent} ^webleacher [or]
rewritecond %{http_user_agent} ^webreaper [or]
rewritecond %{http_user_agent} ^websauger [or]
rewritecond %{http_user_agent} ^website\ extractor [or]
rewritecond %{http_user_agent} ^website\ quester [or]
rewritecond %{http_user_agent} ^webstripper [or]
rewritecond %{http_user_agent} ^webwhacker [or]
rewritecond %{http_user_agent} ^webzip [or]
rewritecond %{http_user_agent} ^wget [or]
rewritecond %{http_user_agent} ^widow [or]
rewritecond %{http_user_agent} ^wwwoffle [or]
rewritecond %{http_user_agent} ^xaldon\ webspider [or]
rewritecond %{http_user_agent} ^zeus
rewriterule ^.* - [f,l]
[f] - 403 forbidden
[l] - ?

8. change your default directory page 改变缺省目录页面
directoryindex index.html index.php index.cgi index.pl

9. redirects 转向
单个文件
redirect /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
整个目录
redirect /old_dir http://yoursite.com/new_dir
效果: 如同将目录移动位置一样
http://yoursite.com/old_dir -> http://yoursite.com/new_dir
http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html
tip: 使用用户目录时redirect不能转向的解决方法
当你使用apache默认的用户目录,如 http://mysite.com/~windix,当你想转向 http://mysite.com/~windix/jump时,你会发现下面这个redirect不工作:
redirect /jump http://www.google.com
正确的方法是改成
redirect /~windix/jump http://www.google.com
(source: .htaccess redirect in “sites” not redirecting: why?
)

10. prevent viewing of .htaccess file 防止.htaccess文件被查看
order allow,deny
deny from all

11. adding mime types 添加 mime 类型
addtype application/x-shockwave-flash swf
tips: 设置类型为 application/octet-stream 将提示下载

12. preventing hot linking of images and other file types 防盗链
需要mod_rewrite模块
rewriteengine on
rewritecond %{http_referer} !^$
rewritecond %{http_referer} !^http://(www/\.)?mydomain.com/.*$ [nc]
rewriterule \.(gif|jpg|js|css)$ - [f]
解析:
若 http_referer 非空 (来源为其他站点,非直接连接) 并且
若 http_referer 非(www.)mydomain.com开头(忽略大小写[nc]) (来源非本站)
对于所有含有 .gif/.jpg/.js/.css 结尾的文件给出 403 forbidden 错误[f]
也可指定响应,如下例显示替换图片
rewriterule \.(gif|jpg)$
[r,l]
[r] - 转向(redirect)
[l] - 连接(link)

13. preventing directory listing 防止目录列表时显示
indexignore *
indexignore *.jpg *.gif
tips:
允许目录列表显示: options +indexes
禁止目录列表显示: options -indexes
显示提示信息: 页首 文件header, 页尾 文件readme

手工开启discuz4.1页面静态化

Wednesday, May 10th, 2006

首先的第一点是确认你的服务器支持 rewrite mod 不然请略过此文。
具体方法

首页后台开启 页面静态化的选项[表告诉我你不知道那个东西在那里。]
接着进入论坛根目录,像我的论坛根目录就是/bbs
在/bbs 这个目录里面新建一个文件 .htaccess,内容如下

rewriteengine on

rewritebase /

rewriterule ^archiver/([a-z0-9-]+.html)$ archiver/index.php?$1

rewriterule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2

rewriterule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3d$4&page=$2

rewriterule ^profile-(username|uid)-(.*).html$ viewpro.php?$1=$2

.htaccess 上传试试 rewritebase / 中“/”为根目录 如果是bbs改为“/bbs”

如无法保存,附件有 .htaccess 下载回去自己改
htaccess.rar

.htaccess 301智能 跳转代码

Sunday, February 12th, 2006

转换空间后自动跳转到新页面的代码
用的是301的智能跳转 空间需要支持.httaccess,代码早年就出来,今天才第一次用到:p

rewriteengine on
rewritecond %{http_host} ^bearlet.com
rewriterule ^(.*)$ http://dev.bearlet.com/tt1.0/$1 [r=301,l]
rewritecond %{http_host} ^www.bearlet.com
rewriterule ^(.*)$ http://dev.bearlet.com/tt1.0/$1 [r=301,l]

http://bearlet.com 和 http://www.bearlet.com 分别为以前用的域米,http://dev .bearlet.com/tt1.0/为新用的空间

免费php空间去广告

Friday, January 13th, 2006

一.自定义404,401,等错误
1.
首先建立一个名为: .htaccess文件
写入以下内容
errordocument 401 /err401.html
errordocument 402 /err402.html
errordocument 403 /err403.html
errordocument 404 /err404.html

其中,401,402,403,404代表错误类型,
后面的err401.html代表其相对应的页面,

2.
分别建立名字为:
err401.html,err402.html………
的文件,当出现对应的错误的时候,
就会指向对面的页面

3.
传到根目录下,
也就是 public_html 目录下
一切就ok了

二. 去掉广告
建个文件名 .htaccess 的文件, 文件内容如下:
layoutignoreuri *.php
layoutignoreuri *.cgi
layoutignoreuri *.htm
layoutignoreuri *.html
layoutignoreuri *.js

将 .htaccess 上传至空间的 public_html 目录下,即可去掉广告!