1

我是新手,试图使用 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]

但是我的本地主机也没有读取 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 [Sat Aug 04 15:15:55 2012] [notice] Child 9152:子进程正在运行
[Sat Aug 04 15:15: 55 2012] [通知] Child 9152:获得了启动互斥锁。
[Sat Aug 04 15:15:55 2012] [notice] Child 9152:启动 64 个工作线程。
[2012 年 8 月 4 日星期六 15:15:55] [通知] 子 4764:释放了启动互斥体
[2012 年 8 月 4 日星期六 15:15:56] [通知] 子 4764:所有工作线程已退出。
[2012 年 8 月 4 日星期六 15:15:56] [通知]子 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 文件中,但我仍然得到相同的“内部服务器错误”

这似乎是一个简单的问题,但我已经用尽了所有简单的解决方案。任何帮助将不胜感激(并节省我没有拔掉的小头发)。

谢谢!

4

1 回答 1

2

问题出在RewriteEngine命令上,而不是AllowOverride. 这只是激活了重写命令。

激活 mod_rewrite 是要走的路,你展示的方式。确保您正在编辑正确的 httpd.conf 文件并在重试之前重新启动服务器。

于 2012-08-04T20:50:11.673 回答