Centos htaccess 没有被读取

Posted

技术标签:

【中文标题】Centos htaccess 没有被读取【英文标题】:Centos htaccess not being read 【发布时间】:2012-01-23 00:24:42 【问题描述】:

我正在开发一台新服务器,并通过 yum 安装了“Web 服务器”组。 phpmysql 工作正常,但我无法让 .htaccess 工作。

这是我的测试 .htaccess 文件:

WASD_TEST_CALL_ERROR

我将它作为 .htaccess 与 index.html 页面一起放在测试文件夹中。 它不会报告错误,而是继续加载索引页面而不显示任何错误。

谢谢

【问题讨论】:

【参考方案1】:

确保 AccessFileName 设置为 .htaccess

在 httpd.conf 中搜索 AccessFileName 指令。它定义了分布式配置文件的名称:

grep -i AccessFileName httpd.conf

确保允许用户使用 .htaccess 文件

您可以放入这些文件的内容由 AllowOverride 指令决定。该指令在类别中指定了在 .htaccess 文件中找到哪些指令将被执行。如果此指令设置为 None,则 .htaccess 文件将被完全忽略。在这种情况下,服务器甚至不会尝试读取文件系统中的 .htaccess 文件。

grep -i AllowOverride httpd.conf

当此指令设置为 All 时,任何具有 .htaccess 上下文的指令都可以在 .htaccess 文件中使用: AllowOverride All

保存并关闭文件。重启httpd:

service httpd restart

【讨论】:

【参考方案2】:

您是否在 Apache 配置中设置了 AllowOverride?如果没有,请将 AllowOverride 从 none 设置为 all

【讨论】:

【参考方案3】:

在 CentOS7 上,以下内容应该会有所帮助:

    /etc/httpd/conf/httpd.conf中的字符串AllowOverride 控制哪些指令可以放在.htaccess 文件中:将AllowOverride None 替换为AllowOverride All

    在 /etc/httpd/conf.modules.d/00-base.conf 中检查 rewrite_module 必须是:

    LoadModule rewrite_module modules/mod_rewrite.so

    .htaccess 文件必须在 /var/www/html/

    示例内容.htaccess:

    AuthUserFile /var/www/.htpasswd AuthGroupFile /dev/null AuthName "Please Enter Password" AuthType Basic Require valid-user 检查并重启 Apache:

    httpd -t

    /bin/systemctl restart httpd.service

【讨论】:

【参考方案4】:

转到 /etc/httpd/conf/httpd.conf 并找到以下行。 .htaccess 文件中允许使用 htaccess 上下文:AllowOverride All

保存并关闭文件。重启httpd:

【讨论】:

显示代码时,请嵌入实际代码,而不是代码图像。【参考方案5】:

    /etc/httpd/conf/httpd.conf:将 AllowOverride None 替换为 AllowOverride All

    httpd -M | grep rewrite_module 应该结果

rewrite_module(共享)

即使在确保所有这些都到位后仍然无法正常工作?然后确保您的 .htaccess 在顶部有以下行。

RewriteEngine On

【讨论】:

以上是关于Centos htaccess 没有被读取的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 文件未被读取

一个特定的htaccess查询[关闭]

.htaccess 未被读取。即使使用 AllowOverride All

防止 SQL 注入的 Htaccess 和 Mysqli 方法之间的区别

如何在 .htaccess 中将路径附加到 PHP include_path

为啥我的 .htaccess 文件重定向到完整的服务器路径而不是相对路径?