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 не найден. У меня есть index.html в /var/www (права доступа:777 и владение www-data:www-data), и я также проверил, что была создана символическая ссылка для site2.com.conf в / etc / apache2 / sites -Enabled.

Есть ли способ это исправить?

Спасибо.

2 ответа

Ваша директива WSGIScriptAlias ​​гласит, что нужно отправлять все, за исключением явных статических файлов с псевдонимами, в Django. Таким образом, если вы пытаетесь получить доступ к index.html в явном виде, он не будет использовать статический, а если Django не знает, что с ним делать, он вернет 404. Какой реальный URL вы используете? Для этого URL у вас есть соответствующая конфигурация в Django urls.py, чтобы Django знал, что делать?

В качестве альтернативы проблема может заключаться в том, что у вас нет файла /srv/site2/wsgi/django.wsgi или из-за того, что вы не настроили директиву Allow для / srv / site2 / wsgi, например, в документации Django/mod_wsgi сказано, что вы должны хотя отсутствие этого обычно приводит к 403.

Предлагаем вам закомментировать WSGIScriptAlias ​​и посмотреть, что произойдет первым. Затем вам нужно будет правильно объяснить, как вы хотите, чтобы вещи работали на реальных примерах. Чтение руководства по интеграции Django на сайте mod_wsgi также может быть хорошей идеей.

У вас есть:

NameVirtualHost *:80

в вашей конфигурации? Вам нужно включить это где-то (ports.conf в Debian) в конфигурацию apache, а затем перезапустить apache.

Другие вопросы по тегам