level 6
grick
楼主
首先,来看看Apache手册中关于.htaccess的说明:工作原理和使用方法.htaccess文件(或者\\\"分布式配置文件\\\")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。说明:如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 通常,.htaccess文件使用的配置语法和主配置文件一样。AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允许在.htaccess中使用,那么在本手册的说明中,此指令会有一个覆盖项段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。例如,本手册对AddDefaultCharset指令的阐述表明此指令可以用于.htaccess文件中(见\\\"作用域\\\"项),而覆盖项一行是FileInfo ,那么为了使.htaccess中的此指令有效,则至少要设置 AllowOverride FileInfo 。例子:作用域 server config, virtual host, directory, .htaccess 覆盖项 FileInfo 如果不能确定某个指令是否可以用于.htaccess文件,可以查阅手册中对指令的说明,看在\\\"作用域\\\"行中是否有\\\".htaccess\" 。(不)使用.htaccess文件的场合一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的
段中,而且更高效。避免使用.htaccess文件有两个主要原因。首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用(参见指令的生效),所以,如果请求/www/htdocs/example中的页面,Apache必须查找以下文件:/.htaccess/www/.htaccess/www/htdocs/.htaccess/www/htdocs/example/.htaccess 总共要访问4个额外的文件,即使这些文件都不存在。(注意,这可能仅仅由于允许根目录\\\"/\"使用.htaccess ,虽然这种情况并不多。)其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他们参阅相应的说明,以免日后生出许多麻烦。注意,在/www/htdocs/example目录下的.htaccess文件中放置指令,与在主配置文件中
段中放置相同指令,是完全等效的。/www/htdocs/example目录下的.htaccess文件:/www/htdocs/example目录下的.htaccess文件的内容:AddType text/example .exm httpd.conf文件中摘录的内容:
AddType text/example .exm 但是,把配置放在主配置文件中更加高效,因为只需要在Apache启动时读取一次,而不是在每次文件被请求时都读取。
2007年11月12日 11点11分
1
段中,而且更高效。避免使用.htaccess文件有两个主要原因。首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用(参见指令的生效),所以,如果请求/www/htdocs/example中的页面,Apache必须查找以下文件:/.htaccess/www/.htaccess/www/htdocs/.htaccess/www/htdocs/example/.htaccess 总共要访问4个额外的文件,即使这些文件都不存在。(注意,这可能仅仅由于允许根目录\\\"/\"使用.htaccess ,虽然这种情况并不多。)其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他们参阅相应的说明,以免日后生出许多麻烦。注意,在/www/htdocs/example目录下的.htaccess文件中放置指令,与在主配置文件中
段中放置相同指令,是完全等效的。/www/htdocs/example目录下的.htaccess文件:/www/htdocs/example目录下的.htaccess文件的内容:AddType text/example .exm httpd.conf文件中摘录的内容:
AddType text/example .exm 但是,把配置放在主配置文件中更加高效,因为只需要在Apache启动时读取一次,而不是在每次文件被请求时都读取。