Htaccess:修订间差异

来自站长百科
跳转至: 导航、​ 搜索
无编辑摘要
无编辑摘要
第1行: 第1行:
.htaccess文件提供了针对每个目录改变配置的方法。
'''.htaccess'''文件提供了针对每个目录改变配置的方法。





2009年9月5日 (六) 09:04的版本

.htaccess文件提供了针对每个目录改变配置的方法。


启用.htaccess

如何让自己的本地Apache服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

改为

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

就可以了

如何建立.htaccess文件

.htaccess就是一个普通的文本文件,这样的文件在windows操作系统中无法建立,可以先建立一个htaccess.txt文件,上传到服务器以后再修改名车即可。

使用.htaccess文件的场合

一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。

.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。

虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。

避免使用.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文件中放置指令,与在主配置文件中<Directory /www/htdocs/example>段中放置相同指令,是完全等效的。

/www/htdocs/example目录下的.htaccess文件: /www/htdocs/example目录下的.htaccess文件的内容:

AddType text/example .exm httpd.conf文件中摘录的内容:

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

但是,把配置放在主配置文件中更加高效,因为只需要在Apache启动时读取一次,而不是在每次文件被请求时都读取。

将AllowOverride设置为none可以完全禁止使用.htaccess文件:

AllowOverride None 

虚拟主机环境中,因为管理员不能让所有用户修改服务器配置文件,所以通过.htaccess修改配置就是必要的。用户经常会用.htaccess文件来设置Rewrite 目录密码保护 默认页面或者是覆盖服务器的其他设置

相关条目

Rewrite Apache 伪静态 防盗链


参考资料:

  1. Apache 2.2 中文版参考手册