http://u220434.s1.weizhan1.com/admin/login.html
阿帕奇文件设置
htaccessfiles 提供了一种进行配置 基于每个目录的更改。
| 相关模块 | 相关指令 |
|---|---|
.htaccess.htaccess.htaccessDirectory.htaccess文件(或“分布式配置文件”) 提供一种基于每个目录进行配置更改的方法。一个 文件(包含一个或多个配置指令)放置在 particular document 目录,并且指令适用于该目录 目录及其所有子目录。
如果您想将文件命名为 否则,您可以使用 Directive 更改文件名。例如 如果您更愿意调用该文件,那么您 可以将以下内容放入您的服务器配置文件中:.htaccessAccessFileName.config
通常,文件使用与 主要配置 文件。您可以在这些文件中添加的内容由指令决定。这 directive 在 categories 中指定 directive 将是什么 如果它们在文件中找到,则为 honor。如果 指令,则 该指令的文档将包含一个 Override 部分, 指定必须要输入的值才能实现该 指令。.htaccessAllowOverride.htaccess.htaccessAllowOverride
例如,如果您查看该指令的文档,您会发现 files 中允许它。(请参阅指令摘要中的 Context 行。Override 行显示为 .因此,您至少必须具有 才能使此指令为 在文件中 honored 。AddDefaultCharset.htaccessFileInfoAllowOverride FileInfo.htaccess
如果您不确定文件中是否允许使用特定指令,请查看该文档 指令,并检查 Context 行中的 “.htaccess”。.htaccess
通常,您应该只在以下情况下使用文件 您无权访问主服务器配置文件。有 例如,一个常见的误解是用户身份验证应该 总是以文件的形式完成,而且,在***近几年, 另一个误解是 directives 必须进入文件。这根本不是 箱。您可以将用户身份验证配置放在主服务器中 配置,而这实际上是***的 事情。同样,指令效果更好, 在许多方面,在主服务器配置中。.htaccess.htaccessmod_rewrite.htaccessmod_rewrite
.htaccessfiles 应在 内容提供程序需要对 基于目录,但在服务器系统上没有 root 访问权限。 如果服务器管理员不愿意 频繁的配置更改,可能需要允许 单个用户在文件中进行这些更改 为了他们自己。例如,在以下情况下尤其如此 ISP 在一台机器上托管多个用户站点,并希望 他们的用户能够更改他们的配置。.htaccess
但是,一般来说,文件的使用应该是 尽可能避免。您将考虑的任何配置 放入一个文件中,也可以同样有效地 在主服务器的某个部分制作 配置文件。.htaccess.htaccess
避免使用文件有两个主要原因。.htaccess
首先是性能。当设置为允许使用文件时,httpd 将 在每个目录中查找文件。因此 允许文件会导致性能下降, 无论您是否真的使用它们!此外,每次文档 要求。AllowOverride.htaccess.htaccess.htaccess.htaccess
进一步注意,httpd 必须查找文件 在所有更高级别的目录中,为了获得完整的 指令。(请参阅有关如何作的部分 指令。因此,如果从 目录中,httpd 必须查找 以下文件:.htaccess/www/htdocs/example
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
因此,对于该目录外的每个文件访问,有 4 个 其他文件系统访问,即使这些文件都不是 目前。(请注意,仅当为 启用了文件时,才会出现这种情况,而 通常不是这种情况。.htaccess/
对于指令,在上下文中,这些正则表达式必须是 使用对目录的每个请求重新编译,而在 main server configuration 上下文,它们被编译一次并缓存。 此外,规则本身也更加复杂,这是必须的 解决每个目录上下文附带的限制 和。有关更多信息,请参阅 Rewrite Guide 关于这个主题的细节。RewriteRule.htaccessmod_rewrite
第二个考虑因素是安全性。您允许 用户修改服务器配置,这可能会导致 这是你无法控制的。仔细考虑是否要捐赠 您的用户具有此权限。另请注意,给 users 较少的 特权将导致额外的技术支持 请求。请务必清楚地告诉用户 您授予他们的权限。准确指定您设置的内容,并指向它们 到相关文档,会省去很多困惑 后。AllowOverride
请注意,它完全等同于将文件放在包含 指令,并将相同的指令放在主服务器的 Directory 部分中 配置:.htaccess/www/htdocs/example
.htaccess文件在 :/www/htdocs/example
/www/htdocs/examplehttpd.conf但是,将此配置放在服务器配置中 file 将导致较小的性能影响,因为配置 在 httpd 启动时加载一次,而不是每次文件 要求。
可以完全禁用文件的使用 通过将指令设置为 :.htaccessAllowOverridenone
在文件中找到的配置指令 将应用于文件所在的目录 及其所有子目录。然而,这很重要 还要记住可能有文件 在更高的目录中。指令按照它们的顺序应用 找到。因此,特定 directory 可能会覆盖在文件中找到的指令 在目录树的较高位置找到。而这些反过来可能具有 被覆盖的指令 - 在更高的位置或在主服务器中找到 配置文件本身。.htaccess.htaccess.htaccess.htaccess.htaccess
例:
在该目录中,我们有一个包含以下内容的文件:/www/htdocs/example1.htaccess
(注意:您必须具有 “” 有效 以允许在 files 中使用 “” 指令。AllowOverride OptionsOptions.htaccess
在目录中,我们有 一个包含以下内容的文件:/www/htdocs/example1/example2.htaccess
由于第二个文件,在目录中,CGI 执行不是 permitd,因为只有 is in effect,它 完全覆盖可能已位于 地方。.htaccess/www/htdocs/example1/example2Options Includes
如有关配置部分的文档中所述,文件可以覆盖 相应的目录,但将被其他类型覆盖 的配置部分。这 fact 可用于强制执行某些配置,即使在 自由环境的存在。例如,到 阻止脚本执行,同时允许设置任何其他内容,您可以使用:.htaccessAllowOverride.htaccess
如果您直接跳转到文档的这一部分以了解如何作 要进行身份验证,请务必注意一件事。有一个 常见的误解,认为您需要使用文件才能实现密码 认证。事实并非如此。放置身份验证指令 在主服务器配置文件中的某个部分,是***方式 来实现这一点,并且 files 应该只被使用 如果您无权访问主服务器配置文件。请参阅上文,了解何时应该和应该 不使用文件。.htaccess.htaccess.htaccess
话虽如此,如果你仍然认为你需要使用一个文件,你可能会发现像 以下内容可能对您有用。.htaccess
.htaccess文件内容:
请注意,必须生效 使这些指令生效。AllowOverride AuthConfig
请参阅身份验证教程以获取 对身份验证和授权的更完整讨论。
文件的另一个常见用途是启用 特定目录的服务器端包含。这可以通过 以下配置指令,放置在所需目录中的文件中:.htaccess.htaccess
请注意,和 必须同时生效,这些指令才能具有任何 影响。AllowOverride OptionsAllowOverride FileInfo
请参阅 SSI 教程了解更多信息 服务器端包含的完整讨论。
在 files 中使用时,请注意每个目录的上下文 稍微改变了一点。特别是,规则被视为相对于 当前目录,而不是原始请求的 URI。 请考虑以下示例:RewriteRule.htaccess
在文档目录中,前导 slash 将从提供给 的值中删除,并在子目录中从 它。因此,您的正则表达式需要省略该部分,因为 井。.htaccessRewriteRuleimages/images/
请参阅 mod_rewrite 文档 有关使用 的更多详细信息。mod_rewrite
***,您可能希望使用文件来允许 在特定目录中执行 CGI 程序。这可能是 使用以下配置实现:.htaccess
或者,如果您希望给定目录中的所有文件都是 被视为 CGI 程序,这可以通过以下方式完成 配置:
请注意,和 必须同时生效,这些指令才能具有任何 影响。AllowOverride OptionsAllowOverride FileInfo
请参阅 CGI 教程了解更多信息 CGI 编程和配置的完整讨论。
当你把配置指令放在一个文件中,但没有得到想要的效果时,会有很多 可能出错的事情。.htaccess
***常见的问题是 set 的 set 中,以便遵循您的配置指令。做 确保您没有 In Effect 对于有问题的文件范围。一个很好的测试是将 garbage 并重新加载页面。如果服务器错误为 未生成,那么您几乎可以肯定 In effect.AllowOverrideAllowOverride None.htaccessAllowOverride None
另一方面,如果您在尝试 访问文档,请检查 httpd 错误日志。它可能会告诉你 文件中使用的指令不是 允许。.htaccess
[Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
这将表明您使用的指令是 从不允许在文件中显示,或者您只是 don't have set to 一个足以满足您使用的指令的级别。查阅 该特定指令的文档,以确定哪个指令是 案子。.htaccessAllowOverride
或者,它可能会告诉您 指令本身的用法。
[Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
在这种情况下,错误消息应特定于 您提交的特定语法错误。