我是新手试图使用Apache 2.2.22和PHP 5.3.15将我的在线站点复制到本地服务器上。但是,我的localhost没有读取.htaccess文件。我修改了示例httpd.conf文件,它从localhost / index.php开始正确注册该站点。但是如果我转到localhost / index我会收到“Not Found”错误。 .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 [星期六04月15日15:15:55] [通知]子9152:子进程正在运行
[星期六04月15日15:15:55] [通知]儿童9152:获得了起始互斥。
[星期六04月15日15:15:55] [通知]儿童9152:开始64个工作线程。
[星期六04年4月15日15:15:55] [通知]儿童4764:发布了互动开始 [星期六04年4月15日15:15:56] [通知]儿童4764:所有工作线程已经退出。
[2012年8月4日星期六15:15:56] [通知]儿童4764:儿童过程正在退出 [星期六04年4月15日15:15:56] [通知]儿童9152:开始听口80的线程 [星期六04月15日15:15:58] [警告] [客户端127.0.0.1] D:/mywebfile/mywebserver/website/public_html/.htaccess:&gt;无效的命令'RewriteEngine',可能拼写错误或由模块定义包含在服务器配置中
我也尝试取消注释
#LoadModule rewrite_module modules/mod_rewrite.so
在httpd文件中,但我仍然得到相同的“内部服务器错误”
这似乎是一个简单的问题,但我已经用尽了所有简单的解决方案。任何帮助将不胜感激(并保存我没有拔出的小头发。)
谢谢!
答案 0 :(得分:1)
问题在于RewriteEngine
命令,而不是AllowOverride
。只需激活重写命令。
激活mod_rewrite是您要展示的方式。确保您正在编辑正确的httpd.conf文件,并在重新尝试之前重新启动服务器。