本帖主题: .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:全文系转帖 |b"X3]9O9n)G4SV%q3ARu
I Jo
]Fa9J:k4A B XL1.1 什么是.htaccess文件
|T6BtLg)Nd~hXweb.meyu.net.从本指南中,你将可以学习到有关.htaccess文件及其功能的知识,并用以优化你的网站。尽管.htaccess只是一个文件,但它可以更改服务器的设置,允许你做许多不同的事情,最流行的功能是您可以创建自定义的“404 error”页面。.htaccess 并不难于使用,归根结底,它只是在一个text文档中添加几条简单的指令而已。%Lv,E7HM8Q
cbRT&`BM-ZNzweb.meyu.net.首先你要判断主机支持它么鱼网*ddCX D ^(@(Km
web.meyu.net.,V L8Y]
E0H;@h
这可能很难用简单的答案来回答。许多主机支持.htaccess,但实际上并不会特别声明,许多其他类型的主机有能力但并不允许他们的用户使用. htaccess。一般来说,如果你的主机使用Unix或Linux系统,或任何版本的Apache网络服务器,从理论上都是支持.htaccess的,尽管你的主机服务商可能不允许你使用它。
zG%~.cScY{;`么鱼网/Y/DZsgf\
判断你的主机是否允许.htaccess,一个标志很好的是它是否支持文件夹密码保护。为达到此功能,主机服务商需要使用.htaccess(当然,少数情况下他们虽提供密码保护功能,但却并不允许你使用.htaccess)。如果你不确定自己的主机是否支持.htaccess,最好的办法是上传你自己的.htaccess文件看看是否有用,或者直接发送e-mail向你的主机服务商咨询。
4qbJp~e6s'b么鱼网
O;i&F
pV6b|[Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
y:[WC#F5yp5cw
+k1t4K-@eB-^ j*|I8Lweb.meyu.net.子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
gb[6{4h+t%tZf1h3a
.htaccess必须以ASCII模式上传,最好将其权限设置为644。
EQv#}9r;PwcA
4Q2}#cW}:z7p.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件。
j)nXv ^Y(Oweb.meyu.net.0na3cUJV
7~:z?~2T1.2 如何创建.httaccess文件
w;o8j#]%G:^n8wC#kweb.meyu.net.创建.htaccess文件也许会给你带来一些困难。写文件很容易,你只需要在文字编缉器(例如:写字板)里写下适当的代码。真正困难的可能是文件的保存,因为.htaccess是一个古怪的文件名(它事实上没有文件名,只有一个由8个字母组成的扩展名),而在一些系统(如windows 3.1)中无法接受这样的文件名。在大多数的操作系统中,你需要做的是将文档保存成名为:“.htaccess” (包括引号)。如果这也不行,你需要将其先命名为其它名字(例如htaccess.txt),再将其上传到服务器上,之后直接使用FTP软件来重命名。
7EU~ JUc3W
HLXn
c0t7Pd%Nz么鱼网警告 z
|B!x E|
Wb
T9^J.V+uw6g&iweb.meyu.net.在使用.htaccess之前,我必须给你一些警告。虽然在服务器上使用.htaccess绝对不太可能给你带来任何麻烦(如果有些东西错了,它只是没效用罢了),但如果你使用Microsoft FrontPage Extensions,就必须特别小心。因为FrontPage Extensions本身使用了.htaccess,因此你不能编辑它并加入你自己的信息。如果确实有这方面的需要(并不推荐,但是可能),你应该先从服务器上下载.htaccess文档(如果存在),之后在前面加上你的代码。k;jwN'c!n1V
]Q1N.T$v|%FEJ
2|.httacces文件的配置
-K.d9u
[yw9N么鱼网5J7W2GV7mBm u
f*f!gK.@4i
2.1.配置.htaccess 自定义错误页 "S5U] bbd;tg#[
我要介绍的.htaccess的第一个应用是自定义错误页面,这将使你可以拥有自己的、个性化的错误页面(例如找不到文件时),而不是你的服务商提供的错误页或没有任何页面。这会让你的网站在出错的时候看上去更专业。你还可以利用脚本程序在发生错误的时候通知你(例如我使用Free Webmaster Help的PHP脚本程序,当找不到页面的时候自动e-mail给我)。/x_0@m%m"`&yZ
l!S3G+P!lOqENweb.meyu.net.你所知道的任何页面错误代码(像404找不到页面),都可以通过在.htaccess文件里加入下面的文字将其变成自定义页面:y6C%`$@$y4R+@
.v.mvT [-|kweb.meyu.net. ErrorDocument errornumber /file.htmlq.sMYZ'c6V
ziCL'E$l
举例来说,如果我的根目录下有一个nofound.html文件,我想使用它作为404 error的页面:*}9W+gN
^&TU
z\#Rp+F|!o-jVs ErrorDocument 404 /notfound.html
*C8_:Pf
MN么鱼网
gZ1k)A1e]M_6q-Uj如果文件不在网站的根目录下,你只需要把路径设置为: ?/e*k(@6Gt^/L
oJf?/UQ8Po:nM'vweb.meyu.net. ErrorDocument 500 /errorpages/500.htmlYo
R)f4Bh8Cv
_X4]a_G)`,L
以下是一些最常用的错误:
4vq Q1G5h(rweb.meyu.net.
7Dwn L|
[,F常用的客户端请求错误返回代码:3F8HTs
v@T#M
c~{%R;UT400 - Bad request 错误请求
1Si
f"] EAe401 Authorization Required需要验证么鱼网Z5Ke,vyR
403 Forbidden禁止web.meyu.net.!O#hc&W1]~M
404 Not Found找不到页面web.meyu.net.2_lh.K Q
n9q
405 Method Not Allowed
0_^5sS{1IY408 Request Timed OutO
R~:X!\/}
sh
Z!TV
411 Content Length Required
!Wi m%{$^Im412 Precondition Failed2R{~*b){
Y0@D
413 Request Entity Too Longweb.meyu.net.8BoZc*_/F.iIL0A
414 Request URI Too Long
W#}!q:s@W
415 Unsupported Media Typeweb.meyu.net.v
A2fMiMi @
6]!_.CNxxE常见的服务器错误返回代码:T[
u;w{i/G
wk`+Bc 500 Internal Server Error内部服务器错误7SY;UIL
;@N'H'^n],{
\u!Y)YK
接下来,你要做的只是创建一个错误发生时显示的文件,然后把它们和.htaccess一起上传。M-J{W+AC0p
L1H;e+W4G&q#D:kweb.meyu.net.用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:%~M)D j*up FQ
么鱼网AXJo.^9g~Tm.G
ErrorDocument 404 /errors/notfound.html
"G @hCf1M L"C(f ErrorDocument 500 /errors/internalerror.html4rG'acQ
n
;rGd~ U)M*|"a
一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:
TNWuKh)fweb.meyu.net.%}S#k)j?
ErrorDocument 错误代码 /目录名/文件名.扩展名-P
U.b1g(E1D`Z%y
w\
JDw8G)pu
d如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:
*|(Vjwg4hCS/YP{web.meyu.net.y8Q?"SRj
ErrorDocument 401 “你没有权限访问该页面,请放弃!”
'mr aG3?)c
nu!K C)W+MxSFmkgJ$q1T\)Y^u#A9}/S
2.2.配置.htaccess 停示显示目录列表 么鱼网P-l*Q*ML.@
有些时候,由于某种原因,你的目录里没有index文件,这意味着当有人在浏览器地址栏键入了该目录的路径,该目录下所有的文件都会显示出来,这会给你的网站留下安全隐患。
SEY?:|
]
?o"R$k/qweb.meyu.net.为避免这种情况(而不必创建一堆的新index文件),你可以在你的.htaccess文档中键入以下命令,用以阻止目录列表的显示: Options -Indexes "l*i;gP-^,@+T _
么鱼网&T
N/m,u
t"m)E:q
web.meyu.net.1m7PjHv+@d&y'Yh3Qz;a
2.3.配置.htaccess 阻止/允许特定的IP地址么鱼网2~?:O/P4_:UJ
某些情况下,你可能只想允许某些特定IP的用户可以访问你的网站(例如:只允许使用特定ISP的用户进入某个目录),或者想封禁某些特定的IP地址(例如:将低级用户隔离于你的信息版面外)。当然,这只在你知道你想拦截的IP地址时才有用,然而现在网上的大多数用户都使用动态IP地址,所以这并不是限制使用的常用方法。
ow&Y*Tm,^5_ Z_
4zZ?!?Q*}你可以使用以下命令封禁一个IP地址:
P(w~0c#|l
%`0B ^
m1{(F2`w5wweb.meyu.net. deny from 000.000.000.000M|5[bfj
么鱼网%e:oQ6zr3u
这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.,则将封禁210.10.56.0~210.10.56.255的所有IP地址。
G@l2T+iweb.meyu.net.
p
V O'a7^?#}0V1O
你可以使用以下命令允许一个IP地址访问网站:
4b
RC3L3O4{t&BNPf5t
h1Vzj+Kweb.meyu.net. allow from 000.000.000.000
,nZ,ekA&Dnweb.meyu.net.Z8O n'hfMP*`
被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样封禁整个网段。
!b2s4fR#]&_*y
$g.MjPG如果你想阻止所有人访问该目录,则可以使用:web.meyu.net.-WSJ `
L[
EJiE5hn
] deny from all
"vW+p:Y(kyN5_G5S7Pe
不过这并不影响脚本程序使用这个目录下的文档。
S1Z&vZu1^izo么鱼网
:t%R(`7oG7g
"u8d2h?4v2.4.配置.htaccess 替换index文件lw!ob4[/Ic1F|
改变缺省的首页文件YI!s^/k(|Z^
%dM sSh)v一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在w3sky中是 w3sky.PHP。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:{ eO2AV/A-C
web.meyu.net.G6D"k-LkZF-O
DirectoryIndex 新的缺省文件名'@7b.h"O;T
3g0@N:R
`K*t也可以列出多个,顺序表明它们之间的优先级别,例如:
3R4n+C6X0t!_xo
fatm3nK6@[j G么鱼网 DirectoryIndex filename.html index.cgi index.pl default.htm
.K%I-c;O$H#@7]Yweb.meyu.net.
-^v[4bY$m$P么鱼网也许你不想一直使用index.htm或index.html作为目录的索引文件。举例来说,如果你的站点使用PHP文件,你可能会想使用 index.PHP来作为该目录的索引文档。当然也不必局限于“index”文档,如果你愿意,使用.htaccess你甚至能够设置 foofoo.balh来作为你的索引文档!
3]J`VQ"p+f!I)S么鱼网
-E1Px*uhweb.meyu.net.这些互为替换的索引文件可以排成一个列表,服务器会从左至右进行寻找,检查哪个文档在真实的目录中存在。如果一个也找不到,它将会把目录列表显示出来(除非你已经关闭了显示目录文件列表)。0iNgXn#GW
么鱼网;Rb3\:D;S|%C
DirectoryIndex index.PHP index.PHP3 messagebrd.pl index.html index.htm
ts
C#^LW\^
~%@L么鱼网.~jN-ME6E3l,v
Im.wEBL-x2e,O么鱼网2.5.配置.htaccess 重定向页面r[ua&w U7YtTv#C
.htaccess最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现的很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:
cN
I]`0O%l^fweb.meyu.net.U#b g#@"Il`:v"Z
Redirect /location/from/root/file.ext0~F*W*I,tB&YJf"w
http://www.w3sky.com/new/file/123.html#\3b'zv Td
web.meyu.net.Y"^$RQ&`Hw(y
上述例子中,访问在root目录下的名为oldfile.html可以键入:xTdo!{5Y3Y+nZ
S}h&](x%A`{ /oldfile.html
B-@fu5ga么鱼网b2A8A%w`| k A
访问一个旧次级目录中的文件可以键入:
`{5G,w7Z(L dweb.meyu.net.;\h${/} je,i5cE!fO
/old/oldfile.html
.J`]7?
hG么鱼网 p3OX]j4EK
你也可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,并且你已经在一个新网站 http://www.w3sky.com/newdirectory/上建立了与上相同的文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:
| |