11

下面是相关的配置文件,也在http://dpaste.com/97213/

apache 配置当前正在运行,因为访问“example.com/”会显示我放置在文档根目录的 index.html 文件。

我想以前缀“/d”为 Django/apps 提供服务,因此“example.com/d/”将加载默认应用程序,“example.com/d/app3”将加载另一个应用程序,如 url 中配置的那样。 py。

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

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

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

有什么建议么?

编辑: 作为说明,如果我更改 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>
4

2 回答 2

7

这可能与Django Apache Redirect Problem重复,因为该答案解决了这个问题

出于绝望,我在这里打开了几乎所有“相关问题”,最终才偶然发现了这个答案。从我的角度来看,我认为我的问题有一些有价值的“搜索友好”字眼。

编辑:答案:(通过亚历克斯瓦西

要尝试的事情:

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

    LOGIN_URL = '/ [前缀] /accounts/login/'

于 2009-09-23T16:43:27.987 回答
2

在您的 urls.py 中,将 urlpatterns 重命名为 base_urlpatterns;然后在同一文件的末尾添加以下定义:

urlpatterns = patterns('',
    '^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too
    '^your_prefix/', include(base_urlpatterns),
)
于 2012-04-18T13:43:32.790 回答