FROM:http://blog.goalercn.com/blogview.asp?logID=232&cateID=2
因为在一个国外的空间的根文件夹下看到这个
.htaccess,搞不懂是干什么的,在落伍论坛找到一篇文章,先转过来放着,以后再慢慢研究,嘿嘿..
Apache指南:
.htaccess文件
.htaccess文件提供了针对目录改变配置的方法。
*
.htaccess文件
*工作原理和使用方法
*使用
.htaccess文件的场合
*指令的生效
*认证举例
*服务器端包含举例
*CGI举例
*疑难解答
top
.htaccess文件
相关模块相关指令
*core
*mod_auth
*mod_cgi
*mod_include
*mod_mime
*AccessFileName
*AllowOverride
*Options
*AddHandler
*SetHandler
*AuthType
*AuthName
*AuthUserFile
*AuthGroupFile
*Require
top
工作原理和使用方法
.htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。
说明:如果需要使用
.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config,则可以在服务器配置文件中按以下方法配置:
AccessFileName.config
允许放在这些文件中的指令取决于AllowOverride指令,此指令按类别决定了
.htaccess文件中哪些指令才是有效的。如果一个指令允许放在
.htaccess文件中,则,在本手册的说明中,此指令会有一个覆盖段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。
例如,本手册对AddDefaultCharset指令的说明表明了,此指令可以用于
.htaccess文件(见Context一行),而Override一行是"FileInfo",那么为使
.htaccess中的此指令有效,则至少要设置"AllowOverrideFileInfo"。
例子:
Context:serverconfig,virtualhost,directory,
.htaccessOverride:FileInfo
如果不能确定一个特定的指令是否允许用于
.htaccess文件,可以查阅手册中对指令的说明,看在Context(“上下文”)行中是否有"
.htaccess."。
top
使用
.htaccess文件的场合
一般情况下,不应该使用
.htaccess文件,除非你对主服务器配置文件没有存取权限。有一种很常见的误解,认为用户认证只能通过
.htaccess文件实现,但并不是这样,把用户认证写在主服务器配置中是完全可行的,而且是一种很好的方法。
在内容提供者需要针对目录改变服务器的配置而对服务器系统没有root权限时,则应该使用
.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过
.htaccess文件自己修改配置,尤其是ISP在一个机器上宿主多个用户站点,而又希望用户可以自己改变配置的情况下。
虽然如此,一般都应该尽可能地避免使用
.htaccess文件。任何希望放在
.htaccess文件中的配置,都可以放在主服务器的<Directory>段中,而且更高效。
避免使用
.htaccess文件有两个主要原因。
首先是性能。如果AllowOverride允许使用
.htaccess文件,则,Apache需要在每个目录中查找
.htaccess文件,因此,无论是否真正用到,允许使用
.htaccess文件都会导致性能的下降。另外,每次请求一个页面时,都需要读取
.htaccess文件。
还有,Apache必须在所有更高级的目录中查找
.htaccess文件,使所有有效的指令都起作用(参见howdirectivesareapplied.),所以,如果有对/www/htdocs/example中页面的请求,Apache必须查找以下文件:
/
.htaccess/www/
.htaccess/www/htdocs/
.htaccess/www/htdocs/example/
.htaccess而且,对此目录以外的每个文件访问,还有4个附加的文件系统访问,即使这些文件都不存在。(注意,这可能仅仅发生在/允许使用
.htaccess文件的情况下,虽然这种情况并不多。)
其 次是安全。如此,会允许用户修改服务器的配置,可能会导致未加限制的修改,请认真考虑是否给予用户这样的特权。但是,如果给予用户较少的特权而不能满 足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他们参阅相应 的说明,以免日后许多麻烦。
注意,在/www/htdocs/example目录下
.htaccess文件中放置指令,与,在主服务器配置文件中<Directory/www/htdocs/example>段中放置相同指令,是等效的。:
/www/htdocs/example中的
.htaccess:
/www/htdocs/example中
.htaccess文件的内容
AddTypetext/example.exm
httpd.conf文件中的段
<Directory/www/htdocs/example>
AddTypetext/example.exm
</Directory>
但是,把这个配置放置在服务器配置文件中则更加高效,因为只需要在Apache启动时读取一次,而不是在有文件请求时每次都读取。
将AllowOverride设置为"none"可以完全禁止使用
.htaccess文件。
AllowOverrideNone
top
指令的生效
.htaccess文件中的配置指令作用于
.htaccess文件所在的目录及其所有子目录,但是,很重要需要记住的是,其更高级的目录也可能会有
.htaccess文件,而指令是按查找顺序依次生效,所以,一个特定目录下的
.htaccess文件中的指令可能会覆盖其更高级目录中的
.htaccess文件的指令,即,子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
例如:
目录/www/htdocs/example1中的
.htaccess文件有如下内容:
Options+ExecCGI
(注意:必须设置"AllowOverrideOptions"以允许在
.htaccess文件中使用"Options"指令。)
在目录/www/htdocs/example1/example2中的
.htaccess文件有如下内容:
OptionsIncludes
由于第二个
.htaccess文件的存在,/www/htdocs/example1/example2中的CGI执行是不允许的,而只允许OptionsIncludes,它完全覆盖了之前的设置。
top
认证举例
如果你为了知道如何认证,直接从这里开始看,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用
.htaccess文件,其实不是这样。把认证指令放在主服务器配置文件的<Directory>段中,是一个更好的方法,而
.htaccess文件应该仅仅用于无权访问主服务器配置文件的时候。参见上述的使用
.htaccess文件的场合。
有此声明在先,如果你仍然需要使用
.htaccess文件,请看以下说明。
必须设置"AllowOverrideAuthConfig"以允许这些指令生效
.htaccess文件的内容:
AuthTypeBasic
AuthName"PasswordRequired"
AuthUserFile/www/passwords/password.file
AuthGroupFile/www/passwords/group.file
RequireGroupadmins
注意,必须设置AllowOverrideAuthConfig以允许这些指令生效
更详细的有关身份识别和认证的说明,请参见authenticationtutorial。
top
服务器端包含举例
.htaccess文件的另一个常见用途是允许一个特定目录的服务器端包含(ServerSideIncludes),可以在需要的目录中放置
.htaccess文件,并如下配置:
Options+Includes
AddTypetext/htmlshtml
AddHandlerserver-parsedshtml
注意,必须同时设置AllowOverrideOptions和AllowOverrideFileInfo使这些指令生效。
更详细的有关服务器端包含的说明,请参见SSItutorial。
top
CGI举例
最后,可以通过
.htaccess文件允许在特定目录中执行CGI程序,需按如下配置:
Options+ExecCGI
AddHandlercgi-scriptcgipl
另外,如下,可以使给定目录下所有文件被视为CGI程序:
Options+ExecCGI
SetHandlercgi-script
注意,必须设置AllowOverrideOptions使这些指令生效。
更详细的有关CGI编程和配置的说明,请参见CGItutorial。
top
疑难解答
如果在
.htaccess文件中写入了配置指令但不起作用,可能有多种原因。
最常见的原因是,AllowOverride指令没有被正确设置,必须确保没有对此文件区域设置AllowOverrideNone。有一个很好的测试方法,即,在
.htaccess文件随便增加点没用的内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了AllowOverrideNone。
在访问文档时,如果收到服务器的出错消息,应该检查Apache的出错日志,可以知道
.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。
.htaccess文件使用手册
-
.htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
-子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
-
.htaccess必须以ASCII模式上传,最好将其权限设置为644。
错误文档的定位
常用的客户端请求错误返回代码:
401AuthorizationRequired
403Forbidden
404NotFound
405MethodNotAllowed
408RequestTimedOut
411ContentLengthRequired
412PreconditionFailed
413RequestEntityTooLong
414RequestURITooLong
415UnsupportedMediaType
常见的服务器错误返回代码:
500InternalServerError
用户可以利用
.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再
.htaccess中,加入如下的指令:
ErrorDocument404/errors/notfound.html
ErrorDocument500/errors/internalerror.html
一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:
ErrorDocument错误代码/目录名/文件名.扩展名
如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:
ErrorDocument401"<bodybgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>"
文档访问的密码保护
要利用
.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:
zheng:y4E7Ep8e7EYV
这里密码经过加密,用户可以自己找些工具将密码加密成
.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。
有了授权用户文档,可以在
.htaccess中加入如下指令了:
AuthUserFile.htpasswd的服务器目录
AuthGroupFile/dev/null(需要授权访问的目录)
AuthNameEnterPassword
AuthTypeBasic(授权类型)
requireuserwsabstract(允许访问的用户,如果希望表中所有用户都允许,可以使用requirevalid-user)
注,括号部分为学习时候自己添加的注释
拒绝来自某个IP的访问
如果我不想某个政府部门访问到我的站点的内容,那可以通过
.htaccess中加入该部门的IP而将它们拒绝在外。
例如:
orderallow,deny
denyfrom210.10.56.32
denyfrom219.5.45.
allowfromall
第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255
想要拒绝所有人?用denyfromall好了。不止用IP,也可以用域名来设定。
保护
.htaccess文档
在使用
.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把
.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,
.htaccess本身也能做到,只需加入如下的指令:
<Files
.htaccess>
orderallow,deny
denyfromall
</Files>
URL转向
我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜
索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:
Redirect/旧目录/旧文档名新文档的地址
或者整个目录的转向:
Redirect旧目录新目录
改变缺省的首页文件
一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在
.htaccess中可以轻易的设置新的缺省文件名:
DirectoryIndex新的缺省文件名
也可以列出多个,顺序表明它们之间的优先级别,例如:
DirectoryIndexfilename.htmlindex.cgiindex.pldefault.htm
防止盗链
如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通
过htaccess的指令来做到。
所需要的指令如下:
RewriteEngineon
RewriteCond%!^$
RewriteCond%!^
http://(www/.)?mydomain.com/.*$[NC]
RewriteRule/.(gif|jpg)$-[F]
如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:
RewriteEngineon
RewriteCond%!^$
RewriteCond%!^
http://(www/.)?mydomain.com/.*$[NC]
RewriteRule/.(gif|jpg)$
http://www.mydomain.com/替代图片文件名[R,L]
-
.htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
-子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
-
.htaccess必须以ASCII模式上传,最好将其权限设置为644。
错误文档的定位
常用的客户端请求错误返回代码:
401AuthorizationRequired
403Forbidden
404NotFound
405MethodNotAllowed
408RequestTimedOut
411ContentLengthRequired
412PreconditionFailed
413RequestEntityTooLong
414RequestURITooLong
415UnsupportedMediaType
常见的服务器错误返回代码:
500InternalServerError
用户可以利用
.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再
.htaccess中,加入如下的指令:
ErrorDocument404/errors/notfound.html
ErrorDocument500/errors/internalerror.html
一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:
ErrorDocument错误代码/目录名/文件名.扩展名
如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:
ErrorDocument401"<bodybgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>"
文档访问的密码保护
要利用
.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:
zheng:y4E7Ep8e7EYV
这里密码经过加密,用户可以自己找些工具将密码加密成
.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。
有了授权用户文档,可以在
.htaccess中加入如下指令了:
AuthUserFile.htpasswd的服务器目录
AuthGroupFile/dev/null(需要授权访问的目录)
AuthNameEnterPassword
AuthTypeBasic(授权类型)
requireuserwsabstract(允许访问的用户,如果希望表中所有用户都允许,可以使用requirevalid-user)
注,括号部分为学习时候自己添加的注释
拒绝来自某个IP的访问
如果我不想某个政府部门访问到我的站点的内容,那可以通过
.htaccess中加入该部门的IP而将它们拒绝在外。
例如:
orderallow,deny
denyfrom210.10.56.32
denyfrom219.5.45.
allowfromall
第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255
想要拒绝所有人?用denyfromall好了。不止用IP,也可以用域名来设定。
保护
.htaccess文档
在使用
.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把
.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,
.htaccess本身也能做到,只需加入如下的指令:
<Files
.htaccess>
orderallow,deny
denyfromall
</Files>
URL转向
我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜
索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:
Redirect/旧目录/旧文档名新文档的地址
或者整个目录的转向:
Redirect旧目录新目录
改变缺省的首页文件
一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在
.htaccess中可以轻易的设置新的缺省文件名:
DirectoryIndex新的缺省文件名
也可以列出多个,顺序表明它们之间的优先级别,例如:
DirectoryIndexfilename.htmlindex.cgiindex.pldefault.htm
防止盗链
如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通
过htaccess的指令来做到。
所需要的指令如下:
RewriteEngineon
RewriteCond%!^$
RewriteCond%!^
http://(www/.)?mydomain.com/.*$[NC]
RewriteRule/.(gif|jpg)$-[F]
如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:
RewriteEngineon
RewriteCond%!^$
RewriteCond%!^
http://(www/.)?mydomain.com/.*$[NC]
RewriteRule/.(gif|jpg)$
http://www.mydomain.com/替代图片文件名[R,L]
一.自定义404,401,等错误
1.
首先建立一个名为:
.htaccess写入以下内容
ErrorDocument401/err401.html
ErrorDocument402/err402.html
ErrorDocument403/err403.html
ErrorDocument404/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
将
.htaccess上传至空间的Public_html目录下,即可去掉广告!
注意*.*这里..想去那种扩展名的文件,就写上那种文件的扩展名!
这个是最简单的方法,只要在根目录加这个文件,那么整个网站都不会有广告!
分享到:
相关推荐
Apache Web服务器.htaccess文件配置.docx
apache开启.htaccess及.htaccess的使用方法.docx
如何让IIS支持Apache .htaccess 伪静态规则 ? 很简单,一键安装覆盖即可,内含说明步骤与安装包。
到英文网站 才找到的 答案 (已译成中文)
Apache的Mode Rewrite模块和.htaccess文件配合.docx
主要介绍了Apache服务器中.htaccess文件的实用配置示例集锦,囊括了防盗链重定向及强制浏览器下载指定的文件类型等例子,很黄很暴力,需要的朋友可以参考下
ThinkPHP的去除URL中的index.php的.htaccess文件
1. 在需要使用.htaccess文件的目录下新建一个.htaccess文件, 如本人的一个Discuz论坛目录: 代码如下:vim /var/www/html/168pc/bbs/.htaccess 2. 在里面输入规则,我这里输入Discuz的伪静态规则: 代码如下: # ...
mac电脑在xampp环境下搭建drupal使用的.htaccess配置文件,下载后将文件名改为.htaccess放在网站根目录即可。 如果网站不在根目录则放在对应级别的目录下 并修改htaccess文件119行和123行,将119行RewriteBase /...
.htaccess文件教程 301重定向 自定义404错误.zip
.htaccess伪静态 适用方维分享系统以及其他php
如果你的服务器目录结构是这样: /usr/corsak/www/maindir 如果Apache指令中开启了AllowOverride支持.htaccess文件,每访问一次会依次搜索: /usr/corsak/www/maindir/.htaccess /... Apache指南: .htaccess文件 .h
伪静态实现
今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借鉴。...其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了,来看看
可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法。 其实nginx和.htaccess一点关系都没有,只是一大堆人...
htaccess:.htaccess对于大多数网站都具有合理的默认值
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。 .htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误...
3.将wp-content/plugins/wp-dbmanager目录中的 htaccess.txt修改为:.htaccess ,并把.htaccess 文件移动到:wp-content/backup-db/目录下 (你也可以下载我们为你修改好的:.htaccess文件压缩包,解压后上传到wp-...
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录...
有外贸需求,需要防止爬虫,像中国和香港的IP,使禁止访问.htaccess,不是非常全,有一些作用,希望能给到大家帮助