虚拟主机未找到 404 错误

虚拟主机未找到 404 错误

在我的 /etc/apache2/sites-enabled 中,我有一个文件 site2.com.conf,它定义了一个虚拟主机,如下所示:

<VirtualHost *:80>
  ServerAdmin hostmaster@wharfage
  ServerName  site2.com
  ServerAlias www.site2.com site2.com
  DirectoryIndex index.html index.htm index.php
  DocumentRoot /var/www
  LogLevel debug
  ErrorLog /var/log/apache2/site2_error.log
  CustomLog /var/log/apache2/site2_access.log combined
  ServerSignature Off

  <Location />
    Options -Indexes
  </Location>

  Alias /favicon.ico /srv/site2/static/favicon.ico

  Alias /static /srv/site2/static
#  Alias /media  /usr/local/lib/python2.5/site-packages/django/contrib/admin/media

Alias /admin/media /var/lib/python-support/python2.5/django/contrib/admin/media 

  WSGIScriptAlias / /srv/site2/wsgi/django.wsgi

  WSGIDaemonProcess site2 user=samj group=samj processes=1 threads=10
  WSGIProcessGroup site2
</VirtualHost>

我执行以下操作来启用该网站:

1)在 /etc/apache2/sites-enabled 中,我运行命令 a2ensite site2.com.conf

2)然后我收到一条消息,站点已成功启用,然后我运行命令 /etc/init.d/apache2 reload。

但是,如果我导航到 www.site2.com,就会出现 404 未找到。我在 /var/www 中有一个 index.html(权限:777 和所有权 www-data:www-data),并且我还验证了在 /etc/apache2/sites-enabled 中为 site2.com.conf 创建了一个符号链接。

有任何解决这个问题的方法吗 ?

谢谢。

答案1

您的 WSGIScriptAlias 指令表示将除明确 Alias 匹配的静态文件之外的所有内容都发送到 Django。因此,如果您尝试明确访问 index.html,它将不会使用静态文件,并且如果 Django 不知道如何处理它,它将返回 404。您使用的实际 URL 是什么?对于该 URL,您是否在 Django urls.py 中为其进行了匹配配置,以便 Django 知道该怎么做?

或者,问题可能是因为您实际上没有 /srv/site2/wsgi/django.wsgi 文件,或者因为您没有为 /srv/site2/wsgi 设置允许指令(如 Django/mod_wsgi 文档所述),尽管缺少该指令通常会导致 403。

建议您先注释掉 WSGIScriptAlias,看看会发生什么。然后您需要用实际示例正确解释您希望事情如何运作。阅读 mod_wsgi 网站上的 Django 集成指南也可能是一个好主意。

答案2

你有没有:

NameVirtualHost *:80

在你的配置中?你需要将它包含在 apache 配置中的某个位置(Debian 上的 ports.conf),然后重新启动 apache。

相关内容