Mac OS Sierra 更新后 Apache 出现 404 错误

19

我最近升级到了Mac OS 10.11 Sierra,但经典的 Web 服务器不能正常工作,或者说我的主目录无法运行。

Apache 服务器在本地主机上可以工作,因为我能看到 'It works' 页面,但是 localhost/~myuser 出现了这个错误提示:'The requested URL /~myuser was not found on this server'

我尝试按照这篇教程操作,但还是不行。请问有人能帮助我吗?


这对我有用! https://tech-cookbook.com/2021/10/25/how-to-setup-mamp-macos-apache-mysql-php-on-macos-12-monterey-2021/ - Voora Tarun
6个回答

28

在终端中,前往 /etc/apache2 目录并

sudo mv httpd.conf httpd.conf.sierra
sudo mv httpd.conf~previous httpd.conf
sudo apachectl restart

对我来说运作得像魔法一样。


该死..现在我的Mac完全无法连接到互联网!我知道这是一些设置问题..因为在恢复模式下可以连接。 - abbood
1
这是正确的答案,只是仍需要设置ServerName条目。 - Dave Nottage
2
我按照类似的方式重命名了httpd-vhosts.conf文件,这样问题就解决了。(我非常讨厌Mac在升级后总是出现问题。) - Sherlock
这个解决方案帮助了我。 - Vad
这个对我来说显示错误404,有人能告诉我为什么吗? - Pianistprogrammer
显示剩余2条评论

24

我从El Capitan升级到Sierra后,以下方法对我也有效:

1)取消注释/etc/apache2/httpd.conf

LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/extra/httpd-vhosts.conf
Include /private/etc/apache2/extra/httpd-userdir.conf

2) 取消注释 /etc/apache2/extra/httpd-userdir.conf


Include /private/etc/apache2/users/*.conf

3) 在我的/etc/apache2/users/$USERNAME.conf文件中,我也配置了ProxyPass,为了使它再次工作,我必须重新取消注释以下内容:httpd.conf

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so

4) PHP可选:您还需要从httpd.conf中取消注释以下内容:

LoadModule php5_module libexec/apache2/libphp5.so

5) 当然,重启 Apache

sudo apachectl -k restart

虽然之前的事情对我有帮助,但现在我更有动力开始使用Vagrant了。


2
对我来说不起作用,但是消息已经改变了。 现在我有一个403禁止页面。 我仔细检查了/etc/apache2/users/username.conf文件,它包含了以下应该没问题的行。 还有其他线索吗? <Directory "/Users/username/Sites/"> AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted </Directory> - drusixtynine
在取消注释 httpd-userdir.conf 中提到的行之前,我遇到了禁止问题,请重新检查读取 *.conf 的行是否已取消注释。另外,为确保安全,请将 username.conf 文件的权限设置为 _chmod 644_。为了尝试 apache 是否会考虑 username.conf,您可以在其中放置任何错误表达式并重新启动,它应该显示一个错误。 - Hesham Saleh
@drusixtynine,请检查httpd.conf中取消注释_Include[...]httpd-userdir.conf_行的最后编辑,希望这可以解决问题。 - Hesham Saleh
未注释的行是:Include /private/etc/apache2/extra/httpd-userdir.conf。 即使该文件有一个我没有更改并且会发出警告的虚拟示例。 username.conf 的 chmod 为 644。 是的,考虑了 username.conf,我遇到了一个错误表达式。 我有点卡在这里。 - drusixtynine
现在它正在工作,我不知道为什么,但我发现在文件extra/httpd-userdir.conf中,“Userdir Sites”这一行被错误地注释掉了。谢谢Hesham :) - drusixtynine

4
cd /etc/apache2
sudo mv httpd.conf httpd.conf.sierra
sudo mv httpd.conf~previous httpd.conf

cd /etc/apache2/extra
sudo mv httpd-vhosts.conf httpd-vhosts.conf.sierra
sudo mv httpd-vhosts.conf~previous httpd-vhosts.conf

sudo apachectl restart

1
升级到Mojave会停用本地主机。许多教程都展示了如何重新激活,但未能展示如何重新配置phpMyAdmin。这是我发现的唯一使phpMyAdmin在线的方法。谢谢! - Hews

2

在/etc/apache2/extra目录下

你会看到一个httpd-vhosts.conf~previous文件

那是你之前的vhosts.conf文件。

只需使用它上面的配置文件即可。

我觉得这很顺利。


2

最近我也将我的El Capitan升级到了Sierra,遇到了类似的问题。我检查了/etc/apache2/和extra目录,发现所有Apache配置文件都是在更新时创建的,看起来很默认,但也有我在El Capitan中自定义的带有“~previous”名称的文件。我所要做的就是用那些先前的文件替换这些默认文件,问题就迎刃而解了。


0
如果有人遇到了与所选答案相应的问题,无法访问您的虚拟主机,则还需要执行一个额外的步骤。
在 /private/etc/apache2/extra/httpd-vhosts.conf 文件中,他们删除了该行(在我的情况下,它应该位于文件底部):
Include /private/etc/apache2/vhosts/*.vhost

然后

sudo apachectl restart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接