以下是相关的配置文件,也在http://dpaste.com/97213/。
apache配置目前正在运行,因为访问'example.com/'会显示我放在文档根目录下的index.html文件。
我想以前缀'/ d'提供Django / apps,所以'example.com/d/'会加载默认应用,'example.com/d/app3'会加载另一个,如配置在urls.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>
答案 0 :(得分:7)
这可能与Django Apache Redirect Problem重复,因为答案解决了这个问题。
我最终只是出于绝望,在这里打开几乎所有的“相关问题”,最终偶然发现了答案。从我的角度来看,我认为我的问题有一些有价值的“搜索友好”字样。
编辑:答案:(通过alex vasi)
要尝试的事情:
看起来您的网站正在使用login_required装饰器。在这种特殊情况下,您可以添加到settings.py:
LOGIN_URL ='/ [前缀] / accounts / login /'
答案 1 :(得分:2)
在你的urls.py中将urlpatterns重命名为base_urlpatterns;然后在同一个文件的末尾添加followinig定义:
urlpatterns = patterns('',
'^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too
'^your_prefix/', include(base_urlpatterns),
)