Centos htaccess 没有被读取
Posted
技术标签:
【中文标题】Centos htaccess 没有被读取【英文标题】:Centos htaccess not being read 【发布时间】:2012-01-23 00:24:42 【问题描述】:我正在开发一台新服务器,并通过 yum 安装了“Web 服务器”组。 php 和 mysql 工作正常,但我无法让 .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 未被读取。即使使用 AllowOverride All
防止 SQL 注入的 Htaccess 和 Mysqli 方法之间的区别