【问题标题】:Django url/page displayed with development server but not apache serverDjango url/page 显示与开发服务器但不是 apache 服务器
【发布时间】:2018-06-09 16:14:34
【问题描述】:

我正在开发 Django 1.11,网址,

http://djangoserver:8002/dj/dev/userlogin/789

适用于开发服务器,但使用 apache URL:

http://djangoserver/dj/dev/userlogin/789

它会抛出 Page not found (404) 错误。

用于 URL 的正则表达式是: url(r'^[0-9]+$', views.userlogin.login , name='login'),

页面的重置显示正常。

我尝试了以下帖子中发布的解决方案,但对我不起作用: django application works on development server but I get 404 on Apache

working on django development server but not on apache

django production server: root path

我没有使用任何虚拟主机。我的 httpd.conf 文件代码 sn-p:

WSGIScriptAlias /dj /var/www/html/dev/dev/wsgi.py

WSGIDaemonProcess djangoserver  python-path=/var/www/html/dev

WSGIProcessGroup djangoserver

WSGIScriptAlias /dj /var/www/html/dev/dev/wsgi.py process-group=djangoserver

<Directory /var/www/html/dev/dev >
#       Options -Indexes +SymLinksIfOwnerMatch
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /var/www/html/dev/dev_app/static/
<Directory /var/www/html/dev/dev_app/static/ >
    Require all granted
</Directory>

【问题讨论】:

  • 如果您在此处发布您的 Apache 配置文件(至少是您正在使用的 VirtualHost 文件)可能会很有用
  • @jeasoft 我已经添加了代码 sn-p

标签: python django apache


【解决方案1】:

您将 /dj 设置为 Django 应用程序的别名,这意味着您的 Django 应用程序接收路径 /dev/userlogin/789,而不是 /dj/dev/userlogin/789。在您的开发服务器上,这是有效的路径,因此您应该将 Apache 配置更改为:

WSGIScriptAlias / /var/www/html/dev/dev/wsgi.py

这样/dj 仍然是您的应用程序解析的路径的一部分。

【讨论】:

  • 我已经尝试过这个解决方案,它不起作用。没有任何别名,django 会抛出 404 错误。即使 url 文件状态: url(r'^dev/', include('dev_app.urls',namespace='dev_app',app_name='dev_app')), url(r'^dj/dev/', include( 'dev_app.urls',namespace='dev_app',app_name='dev_app')),
  • 你知道 404 是 Apache 还是 Django 抛出的?检查您的日志。
  • 然后向我们展示错误,它试图匹配什么 URL?
  • 抛出的错误是:使用 dev.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,顺序如下: ^admin/ ^dev/ ^dj/dev/ 空路径不匹配任何这些。
  • 那是在尝试获取 /dj/dev/userlogin/789 时?错误说 django 收到了一个空路径...另请注意,您的 WSGIScriptAlias 应该位于末尾(如果使用 /)以捕获静态别名。
【解决方案2】:

我所做的唯一更改是在 httpd.conf 文件中声明 WSGIScriptAlias 和 process-group,代码 sn-p:

WSGIDaemonProcess djangoserver  python-path=/var/www/html/dev

WSGIProcessGroup djangoserver

WSGIScriptAlias /dj /var/www/html/dev/dev/wsgi.py process-group=djangoserver

<Directory /var/www/html/dev/dev >
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /var/www/html/dev/dev_app/static/
<Directory /var/www/html/dev/dev_app/static/ >
    Require all granted
</Directory>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2012-06-13
    • 2017-01-09
    • 1970-01-01
    • 2021-12-15
    • 2012-02-26
    相关资源
    最近更新 更多