本帖主题: .htaccess文件使用教程[转贴]
2007-11-16 02:40 PM No.1 |
发表人:adicom
个人Blog
社区短消息
TOP
|
adicom
Meyu Customer
 
UID 4694
精华
1
积分 196
帖子 107
体力 102
威望 10
贡献 0
阅读权限 80
注册 2007-3-19
状态 离线
|
[广告]: 新手解疑1:FTP空间各文件目录的作用
PS:全文系转帖
{4OT a9o,yr!c么鱼网
1A@u9O`O"Obk _1.1 什么是.htaccess文件
})xxE(W'o5DzM从本指南中,你将可以学习到有关.htaccess文件及其功能的知识,并用以优化你的网站。尽管.htaccess只是一个文件,但它可以更改服务器的设置,允许你做许多不同的事情,最流行的功能是您可以创建自定义的“404 error”页面。.htaccess 并不难于使用,归根结底,它只是在一个text文档中添加几条简单的指令而已。web.meyu.net.cBZ.KZE1~3S ArrB
8B#S+YQ&K)|'AGPu首先你要判断主机支持它#_U&H/hi
/?_ks
`$w{,jweb.meyu.net这可能很难用简单的答案来回答。许多主机支持.htaccess,但实际上并不会特别声明,许多其他类型的主机有能力但并不允许他们的用户使用. htaccess。一般来说,如果你的主机使用Unix或Linux系统,或任何版本的Apache网络服务器,从理论上都是支持.htaccess的,尽管你的主机服务商可能不允许你使用它。P#wp5Ng:Ct,X
/ih9[:] d;cX!c,n判断你的主机是否允许.htaccess,一个标志很好的是它是否支持文件夹密码保护。为达到此功能,主机服务商需要使用.htaccess(当然,少数情况下他们虽提供密码保护功能,但却并不允许你使用.htaccess)。如果你不确定自己的主机是否支持.htaccess,最好的办法是上传你自己的.htaccess文件看看是否有用,或者直接发送e-mail向你的主机服务商咨询。&V.KZLRg
web.meyu.net
_A5W3n:d:J&~
Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
-CgS]0u
T么鱼网6q&g c
yTe4n+?-a8[M
子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。ez3w+n)R@YW9z"u
s/a^
t]4lF
S.htaccess必须以ASCII模式上传,最好将其权限设置为644。
8cd)c*~kY,D@^;Z6^web.meyu.net)W9BKz!@Q
.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件。
0f,m;UB!De9d:`0X#?EZ
x
JZGd2M(i(J&D
1.2 如何创建.httaccess文件 web.meyu.net tzxB~ DV5r
创建.htaccess文件也许会给你带来一些困难。写文件很容易,你只需要在文字编缉器(例如:写字板)里写下适当的代码。真正困难的可能是文件的保存,因为.htaccess是一个古怪的文件名(它事实上没有文件名,只有一个由8个字母组成的扩展名),而在一些系统(如windows 3.1)中无法接受这样的文件名。在大多数的操作系统中,你需要做的是将文档保存成名为:“.htaccess” (包括引号)。如果这也不行,你需要将其先命名为其它名字(例如htaccess.txt),再将其上传到服务器上,之后直接使用FTP软件来重命名。2n0Pc0OW Y0Lzy)\)H3K mc
'Ilf;Z ~.E*UcC4V警告 web.meyu.netG.L*}_%Ke
g&VK
Zo+W?*}在使用.htaccess之前,我必须给你一些警告。虽然在服务器上使用.htaccess绝对不太可能给你带来任何麻烦(如果有些东西错了,它只是没效用罢了),但如果你使用Microsoft FrontPage Extensions,就必须特别小心。因为FrontPage Extensions本身使用了.htaccess,因此你不能编辑它并加入你自己的信息。如果确实有这方面的需要(并不推荐,但是可能),你应该先从服务器上下载.htaccess文档(如果存在),之后在前面加上你的代码。.\Q r@
Pa#Xh
+S1y5R~qC6C
Qzd
2|.httacces文件的配置
UIw'J-F)MmWweb.meyu.netweb.meyu.net;O*_9i6N%QXj1{|
8oGqu'd\
2.1.配置.htaccess 自定义错误页 web.meyu.netO6SP3Aj
我要介绍的.htaccess的第一个应用是自定义错误页面,这将使你可以拥有自己的、个性化的错误页面(例如找不到文件时),而不是你的服务商提供的错误页或没有任何页面。这会让你的网站在出错的时候看上去更专业。你还可以利用脚本程序在发生错误的时候通知你(例如我使用Free Webmaster Help的PHP脚本程序,当找不到页面的时候自动e-mail给我)。
)K#? X"gU7{*Yu么鱼网)T1`#lR;u.P(_D4@/w%B
你所知道的任何页面错误代码(像404找不到页面),都可以通过在.htaccess文件里加入下面的文字将其变成自定义页面:web.meyu.netq w*sqO)\6}S^A
;P7Zh&S)bPR ErrorDocument errornumber /file.html么鱼网/G!^UJ
d@)J
9G6]5c)}@-dd举例来说,如果我的根目录下有一个nofound.html文件,我想使用它作为404 error的页面:t0jlGR6q
@
;D4YH
KL6j~ ErrorDocument 404 /notfound.html
jAG0e
^h么鱼网n1J;Wq!x-@OQ0P5Y
如果文件不在网站的根目录下,你只需要把路径设置为:Om2Ri6A
B*f
么鱼网w1prAF
ErrorDocument 500 /errorpages/500.html
!J|:`JQD;{)Sx,H_F+Pt,X#uJg
以下是一些最常用的错误:T
C`Hl:J@
ML8U4D!S ]&k常用的客户端请求错误返回代码:)IP] D2z[`!YF
web.meyu.net d&a|yt+Fl'k4@5q/gG
f
400 - Bad request 错误请求$W _7g+[j\@o"U%W
401 Authorization Required需要验证
YZ4j7g8m9~h a403 Forbidden禁止VU"VR5t @h G]
404 Not Found找不到页面
,P!nN+`Y405 Method Not Allowed]V+uGe%I
408 Request Timed OutP#u1m J*@3`
411 Content Length Required(K9xxS;c
412 Precondition Failedh+K ml8\C&~d
413 Request Entity Too Long么鱼网g j%f1W1v3AG
414 Request URI Too Longweb.meyu.net&\\*@L&i
415 Unsupported Media Typeweb.meyu.net]b+q1})]um
6TXP"dL!C
常见的服务器错误返回代码:web.meyu.netKh6S]_x)WEuI
么鱼网-J[-jHm~8Fv/S
500 Internal Server Error内部服务器错误
)Er!^7uy
O"U6lAUS]apGCo5M
接下来,你要做的只是创建一个错误发生时显示的文件,然后把它们和.htaccess一起上传。
L0tx;|;_
i"ky0RU9sg
用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:么鱼网hnT/]1gE3b
么鱼网ke3q-K^j-rof
ErrorDocument 404 /errors/notfound.html$^GUv7j'vG1H4K
ErrorDocument 500 /errors/internalerror.htmlweb.meyu.netKj)f5E!Z,@
0b-\2zU ^GN8U
一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:
1Vw#NXcV
*q,I5q%ml么鱼网 ErrorDocument 错误代码 /目录名/文件名.扩展名
^Y!?Ku(B'e"Y
wf2q^Zh如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:
*lQy vkZ@8O
3UC#Sbqqhd5bi ErrorDocument 401 “你没有权限访问该页面,请放弃!”
*_*fG;w;V&VVi么鱼网9s%ZsW$k"}g^;Coj
"L&rbJ}KkK-I2.2.配置.htaccess 停示显示目录列表 Gc;aP/q%y
有些时候,由于某种原因,你的目录里没有index文件,这意味着当有人在浏览器地址栏键入了该目录的路径,该目录下所有的文件都会显示出来,这会给你的网站留下安全隐患。么鱼网 BkH Qy
:Rtf$N2a!im为避免这种情况(而不必创建一堆的新index文件),你可以在你的.htaccess文档中键入以下命令,用以阻止目录列表的显示: Options -Indexes web.meyu.net?.Ra8h)_g%W&ah:m
IvdZa!f
i"a3jl+i2_GY5?B7LB2.3.配置.htaccess 阻止/允许特定的IP地址
i)b"N~r*pW._4Vq么鱼网某些情况下,你可能只想允许某些特定IP的用户可以访问你的网站(例如:只允许使用特定ISP的用户进入某个目录),或者想封禁某些特定的IP地址(例如:将低级用户隔离于你的信息版面外)。当然,这只在你知道你想拦截的IP地址时才有用,然而现在网上的大多数用户都使用动态IP地址,所以这并不是限制使用的常用方法。么鱼网C4I*^j&^&lm
FHek {)s
你可以使用以下命令封禁一个IP地址:3G!Q`Z2X A\2k:q
ZBX&[Q么鱼网 deny from 000.000.000.000web.meyu.net{+y*x!}erz
web.meyu.net;vnuf5v:H4o],F
这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.,则将封禁210.10.56.0~210.10.56.255的所有IP地址。么鱼网k _u/N$UpT
/bhiM8{Tweb.meyu.net你可以使用以下命令允许一个IP地址访问网站:
9z?{Ye V-{
`9vj~1^Fn f allow from 000.000.000.000!EPS#]5rk/|;f0Qm
0M9`)P
F,f
被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样封禁整个网段。
]hK
j4RtZF么鱼网)vW/\wGiO'H
如果你想阻止所有人访问该目录,则可以使用:
1Y8{g4peeO么鱼网hn)x
S(Tp
deny from all
[rZ'T`)zEO么鱼网
,vhu Y,}[不过这并不影响脚本程序使用这个目录下的文档。(O7rQ0X/NVk"q
~p3F:W;Nh }P,A T(g
3Q+A3jCo]2.4.配置.htaccess 替换index文件S1i.E
U;}
改变缺省的首页文件
s
@J A0}'jX"zX \?%T!]$w`^`
一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在w3sky中是 w3sky.PHP。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:-x[.\I-qIYjX2Qc
web.meyu.net\{Fn#E%IPN(w
DirectoryIndex 新的缺省文件名
O;O,[|7GF.O.S-q#\么鱼网
hV"_LtOweb.meyu.net也可以列出多个,顺序表明它们之间的优先级别,例如:web.meyu.net3M M;h$~
A$@(F
-{,ut
sH)Us2q DirectoryIndex filename.html index.cgi index.pl default.htm
7g}{f&HPo+_web.meyu.net么鱼网[)uO4{cY%q-Y3Iv_
也许你不想一直使用index.htm或index.html作为目录的索引文件。举例来说,如果你的站点使用PHP文件,你可能会想使用 index.PHP来作为该目录的索引文档。当然也不必局限于“index”文档,如果你愿意,使用.htaccess你甚至能够设置 foofoo.balh来作为你的索引文档!
1v,FcE#w/gZf
"FjZ!b,fSL]
O w这些互为替换的索引文件可以排成一个列表,服务器会从左至右进行寻找,检查哪个文档在真实的目录中存在。如果一个也找不到,它将会把目录列表显示出来(除非你已经关闭了显示目录文件列表)。
+Y0c#Uy~|&nz+h
~!|web.meyu.net3YTWP(I?'m
DirectoryIndex index.PHP index.PHP3 messagebrd.pl index.html index.htm么鱼网 x)VD6^fY }
6XRy3OEoj么鱼网
5f?1X)WT$P2.5.配置.htaccess 重定向页面#f0J+yBuB+He
.htaccess最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现的很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:W!oa-ao| x9Y
aKx.K.k
w7F
nMweb.meyu.net Redirect /location/from/root/file.ext么鱼网$ve
ZB3B6j;u4R
http://www.w3sky.com/new/file/123.html
-g _'y XZ9X9H%i/^么鱼网
-f6j8p7P9_9vJ么鱼网上述例子中,访问在root目录下的名为oldfile.html可以键入:
)_s?|U
^
2N7b)S"o7m({8dC)@1N.Y /oldfile.html
| |