使用URL前缀("子目录")运行Django - 应用程序可行,但URL已损坏?

ano*_*ard 10 apache django mod-wsgi

以下是相关的配置文件,也可以在http://dpaste.com/97213/上找到.

apache配置当前正在工作,因为访问'example.com/'会显示我放在文档根目录下的index.html文件.

我想在前缀'/ d'上提供Django/apps,因此'example.com/d/'会加载默认应用,'example.com/d/app3'会加载另一个,如在网址中配置的那样. PY.

服务Django,我在Linux上使用建议的mod_wsgi.

目前,我可以在'example.com/d'访问Ticket应用程序,但当@login_required装饰器尝试将我发送到登录页面时,我会收到'example.com/accounts/login',而不是预期的'example.com/d/accounts/login'.

由于默认应用程序正确加载,我不确定我在这里做错了什么,或者在生成网址时这是否是Django中的错误.

有什么建议?

编辑: 作为一个说明,如果我更改apache配置行:WSGIScriptAlias/d /home/blah/django_projects/Tickets/apache/django.wsgi到WSGIScriptAlias//home/blah/django_projects/Tickets/apache/django.wsgi该应用程序,评论和登录所有工作正常.即使转到'example.com/admin'也会加载管理员,虽然我已经断开了管理媒体,因此没有加载任何样式表.

---配置关注:

#
# /home/blah/django_projects/Ticket/urls.py
#
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^', include('ticket.urls')),
    (r'^admin/', include(admin.site.urls)),
    (r'^comments/', include('django.contrib.comments.urls')),
)


#
# /home/blah/django_projects/Ticket/apache/django.wsgi
#
import os, sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')

sys.path.append('/home/blah/django_projects')
sys.path.append('/home/blah/django_projects/Tickets')

os.environ['DJANGO_SETTINGS_MODULE'] = 'Tickets.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()


#
# /etc/apache2/sites-available/django_tickets_wsgi (apache conf)
#
NameVirtualHost *
<VirtualHost *>  

    Alias /media /home/blah/django_projects/Tickets/media


    WSGIScriptAlias /d /home/blah/django_projects/Tickets/apache/django.wsgi
    WSGIDaemonProcess exmaple_com user=blah group=blah processes=1 threads=10
    WSGIProcessGroup example_com

    ServerAdmin localhost@example.com
    ServerName example.com

    DocumentRoot /var/www/

    <Directory /var/www/>
        Options -Indexes FollowSymLinks -MultiViews -Includes 
        AllowOverride None
        Order allow,deny
        allow from all
    </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
    ServerSignature Off

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

ano*_*ard 7

这是Django Apache重定向问题的可能重复,因为该答案解决了这个问题.

我最后只是在绝望中打开几乎所有的"相关问题",最终偶然发现了这个答案.从我的角度来看,我认为我的问题有一些有价值的"搜索友好"字样.

编辑:答案:(通过alex vasi)

要尝试的事情:

  1. 将当前域更改为"sites"框架中的"yourdomain.tld/cflow".使用django admin或dumpdata/loaddata manage.py命令很容易.
  2. 看起来您的网站正在使用login_required装饰器.在这种特殊情况下,您可以添加到settings.py:

    LOGIN_URL ='/ [prefix]/accounts/login /'