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.