Apache HTTP 服务器教程:.htaccess 文件

Apache HTTP 服务器教程:.htaccess 文件

何时(不)使用 .htaccess 文件

通常,只有在您无法访问主服务器配置文件时才应使用 .htaccess 文件。例如,存在一个普遍的误解,即用户身份验证始终应该在 .htaccess 文件中进行,近年来,另一个误解是 mod_rewrite 指令必须放在 .htaccess 文件中。事实并非如此。您可以将用户身份验证配置放在主服务器配置文件中,事实上,这是首选方法。同样,mod_rewrite 指令在许多方面在主服务器配置文件中效果更好。

在内容提供者需要在每个目录的基础上对服务器进行配置更改,但没有服务器系统的 root 访问权限的情况下,应该使用 .htaccess 文件。如果服务器管理员不愿意进行频繁的配置更改,则可能希望允许各个用户在 .htaccess 文件中为自己进行这些更改。例如,在 ISP 在一台机器上托管多个用户站点,并希望用户能够更改其配置的情况下,尤其如此。

但是,通常情况下,应尽可能避免使用 .htaccess 文件。您可以将任何您想放在 .htaccess 文件中的配置同样有效地放在主服务器配置文件中的 部分中。

避免使用 .htaccess 文件有两个主要原因。

第一个原因是性能。当 AllowOverride 设置为允许使用 .htaccess 文件时,httpd 将在每个目录中查找 .htaccess 文件。因此,允许 .htaccess 文件会导致性能下降,无论您是否实际使用它们!此外,.htaccess 文件在每次请求文档时都会被加载。

请进一步注意,httpd 必须在所有上级目录中查找 .htaccess 文件,以便获得必须应用的完整指令集。(请参阅关于 指令如何应用 的部分。)因此,如果从目录 /www/htdocs/example 中请求文件,httpd 必须查找以下文件

/.htaccess/www/.htaccess/www/htdocs/.htaccess/www/htdocs/example/.htaccess

因此,对于从该目录中的每个文件访问,即使这些文件都不存在,也会有 4 次额外的文件系统访问。(请注意,这只有在 .htaccess 文件对 / 启用时才会发生,这种情况通常不会发生。)

在 RewriteRule 指令的情况下,在 .htaccess 上下文中,这些正则表达式必须在每次请求目录时重新编译,而在主服务器配置上下文中,它们只编译一次并缓存。此外,规则本身更加复杂,因为必须绕过与每个目录上下文和 mod_rewrite 相关的限制。有关此主题的更多详细信息,请参阅 重写指南。

第二个考虑因素是安全性。您允许用户修改服务器配置,这可能会导致您无法控制的更改。仔细考虑您是否要授予用户此权限。还要注意,授予用户比他们需要的权限更少的权限会导致额外的技术支持请求。确保您清楚地告知用户您授予了他们什么级别的权限。指定您将 AllowOverride 设置为何值,并向他们提供相关文档,这将帮助您避免以后的困惑。

请注意,将 .htaccess 文件放在包含指令的目录 /www/htdocs/example 中与在主服务器配置中将相同指令放在 Directory 部分 中是完全等效的

/www/htdocs/example 中的 .htaccess 文件

/www/htdocs/example 中 .htaccess 文件的内容AddType text/example ".exm"

来自 httpd.conf 文件的部分

AddType text/example ".exm"

但是,将此配置放在服务器配置文件中会导致更少的性能下降,因为配置在 httpd 启动时加载一次,而不是在每次请求文件时加载。

通过将 AllowOverride 指令设置为 none,可以完全禁用 .htaccess 文件的使用

AllowOverride None

相关推荐

地下城与勇士(DNF)安徒恩怪物防御、属抗、血量数据图表 安徒恩攻略
志高空调扇报价
beat365下载唯一官方网

志高空调扇报价

07-19 👁️ 9869
天天飞车R车哪个好?R级赛车排行榜
beat365下载唯一官方网

天天飞车R车哪个好?R级赛车排行榜

06-30 👁️ 2359
剑侠情缘零哪个职业好-职业选择推荐
必发365手机app

剑侠情缘零哪个职业好-职业选择推荐

07-30 👁️ 8249
美团买单怎么用
beat365下载唯一官方网

美团买单怎么用

07-18 👁️ 9104
老图书–《中国钨矿论》电子版合集
必发365手机app

老图书–《中国钨矿论》电子版合集

07-12 👁️ 6603