localhost 未读取 htaccess,httpd AllowOverride All 导致错误
Posted
技术标签:
【中文标题】localhost 未读取 htaccess,httpd AllowOverride All 导致错误【英文标题】:localhost not reading htaccess, httpd AllowOverride All causes error 【发布时间】:2012-08-02 10:58:18 【问题描述】:我是新手,尝试使用 Apache 2.2.22 和 php 5.3.15 将我的在线站点复制到本地服务器上。但是,我的本地主机没有读取 .htaccess 文件。我修改了示例 httpd.conf 文件,它正确地注册了以 localhost/index.php 开头的站点。但是,如果我转到 localhost/index,我会收到“未找到”错误。 .htaccess 文件可以通过我的 ISP 正常工作(即 mysite.com/index 可以正常工作)。
起初我以为是我的 .htaccess 重写有问题
ErrorDocument 404 /404.php
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]
但是我的 localhost 也没有读取 404 错误,这让我认为它是 httpd.conf 文件。经过一些研究,当 AllowOverride 未切换到“全部”时,会发生类似的问题。这是我所拥有的。
<Directory "D:/mywebfile/webserver/website/public_html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
当我将它切换到 AllOverride All 时,我得到一个“内部服务器错误”,并出现以下日志错误
httpd.exe:无法可靠地确定服务器的完全限定域名,使用 10.0.99.35 作为 ServerName [2012 年 8 月 4 日星期六 15:15:55] [通知] 子 9152:子进程正在运行 [2012 年 8 月 4 日星期六 15:15:55] [通知] 孩子 9152:获得了启动互斥锁。 [Sat Aug 04 15:15:55 2012] [notice] Child 9152:启动 64 个工作线程。 [2012 年 8 月 4 日星期六 15:15:55] [通知] Child 4764:发布了启动互斥锁 [Sat Aug 04 15:15:56 2012] [notice] Child 4764:所有工作线程都已退出。 [Sat Aug 04 15:15:56 2012] [notice] Child 4764:子进程正在退出 [2012 年 8 月 4 日星期六 15:15:56] [通知] 子 9152:启动线程以侦听端口 80。 [2012 年 8 月 4 日星期六 15:15:58] [警报] [客户端 127.0.0.1] D:/mywebfile/mywebserver/website/public_html/.htaccess: >无效命令“RewriteEngine”,可能拼写错误或由未包含的模块定义在服务器配置中
我也试过取消注释
#LoadModule rewrite_module modules/mod_rewrite.so
在 httpd 文件中,但我仍然得到相同的“内部服务器错误”
这似乎是一个简单的问题,但我已经用尽了所有简单的解决方案。任何帮助将不胜感激(并节省我没有拔掉的那一点头发)。
谢谢!
【问题讨论】:
【参考方案1】:问题在于RewriteEngine
命令,而不是AllowOverride
。这只是激活重写命令。
激活 mod_rewrite 是要走的路,你展示的方式。确保您正在编辑正确的 httpd.conf 文件并在重试之前重新启动服务器。
【讨论】:
你让我走上了正轨。我认为它与启用 rewrite_mod 后的 AllowOverride 有关,但它仍然无法正常工作,但我的 .htaccess 有一些其他命令(标头和过期)在 httpd.conf 中未启用。我所要做的就是激活它们,然后做一个拳头泵。真是太感谢你了!!以上是关于localhost 未读取 htaccess,httpd AllowOverride All 导致错误的主要内容,如果未能解决你的问题,请参考以下文章
htaccess 用于 apache 未读取的干净 url?