【发布时间】:2014-07-10 00:00:38
【问题描述】:
我已经使用 Django 应用程序服务器尝试了我的 Django 应用程序,它工作得很好。但是,当我尝试将应用程序与 Apache 一起使用时,我在路由的每个 URL 中都会收到 404。以下是我得到的 404 错误:
Page not found (404)
Request Method: GET
Request URL: http://www.domain.com:8787/myapp
Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:
^admin/
^myapp/
^$
^media\/(?P<path>.*)$
The current URL, myapp, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
这是第一个 URL 文件:
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic.simple import redirect_to
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
(r'^myapp/', include('myproject.myapp.urls')),
# This was the orginal plan
# (r'^$', redirect_to, {'url': '/myapp/list/'}), # Just for ease of use.
(r'^$', redirect_to, {'url': '/myapp/index/'}), # Just for ease of use.
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是 (myproject.myapp.urls) 的第二个 URL:
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('myproject.myapp.views',
url(r'^list/$', 'list', name='list'),
url(r'^ass1/$', 'ass1', name='ass1'),
url(r'^ass1v2/$', 'ass1v2', name='ass1v2'),
url(r'^register/$','register', name='register'), # ADD NEW PATTERN!
url(r'^login/$', 'user_login', name='login'),
url(r'^logout/$', 'user_logout', name='logout'),
url(r'^index/$', 'index', name='index'),
url(r'^category/(?P<category_name_url>\w+)/$', 'category', name='category'),
url(r'^indexAddJac444/$', 'indexAddJac444', name='indexAddJac444'),
)
这是 Apache 的 Apache 虚拟主机文件:
<VirtualHost *:8787>
ServerAdmin test@localhost
WSGIDaemonProcess sampleapp python-path=/var/www/sampleapp:/var/www/sampleapp/env/lib/python2.7/site-packages
WSGIProcessGroup sampleapp
WSGIScriptAlias / /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/wsgi.py
WSGIScriptAlias /myapp/index/ /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/wsgi.py
<Directory /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject>
Order allow,deny
Allow from all
</Directory>
Alias /media/ /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/media/
Alias /static/ /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/static/
Alias /myapp/ /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/myapp/
<Directory /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/static>
#Require all granted
</Directory>
<Directory /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/media>
#Require all granted
</Directory>
<Directory /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject/myapp>
#Require all granted
</Directory>
<Directory /var/www/sampleapp/JavaApp/for_django_1-4/myproject/myproject>
<Files wsgi.py>
#Require all granted
</Files>
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
我觉得离解决问题很近,并且知道有解决方案。我需要进一步详细说明更多信息吗?请说。感谢您的帮助。
【问题讨论】:
-
检查 Apache 日志(错误日志和访问日志)。
-
尝试连接
http://www.domain.com:8787/myapp/,最后使用/。如果它有效,那么/有问题。 -
这些是我采取的故障排除步骤。