使用URL前缀(“subdirectory”)运行Django-应用程序可以工作,但URL断开了吗?

使用URL前缀(“subdirectory”)运行Django-应用程序可以工作,但URL断开了吗?,django,apache,mod-wsgi,Django,Apache,Mod Wsgi,以下是相关的配置文件,也可以在 apache配置当前正在工作,因为访问“example.com/”会显示我放在文档根目录下的index.html文件 我想以前缀“/d”为Django/apps提供服务,因此“example.com/d/”将加载默认应用程序,“example.com/d/app3”将加载另一个应用程序,如url.py中配置的那样 为Django服务,我在Linux上使用建议的mod_wsgi 目前,我可以访问'example.com/d'上的票证应用程序,但当@login\u r

以下是相关的配置文件,也可以在

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

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

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

目前,我可以访问'example.com/d'上的票证应用程序,但当@login\u required decorator试图将我发送到登录页面时,我会被发送到'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>
#
#/home/blah/django_projects/Ticket/url.py
#
从django.conf.url.defaults导入*
从django.contrib导入管理
admin.autodiscover()
urlpatterns=模式(“”,
(r'^',包括('ticket.url'),
(r“^admin/”,包括(admin.site.url)),
(r“^comments/”,包括('django.contrib.comments.url'),
)
#
#/home/blah/django_projects/Ticket/apache/django.wsgi
#
导入操作系统,系统
sys.path.append(os.path.dirname(os.path.abspath(_文件__))+“/…”)
sys.path.append(“/home/blah/django_projects”)
sys.path.append(“/home/blah/django_projects/Tickets”)
os.environ['DJANGO\u设置\u模块]='Tickets.SETTINGS'
导入django.core.handlers.wsgi
application=django.core.handlers.wsgi.WSGIHandler()
#
#/etc/apache2/sites available/django_tickets_wsgi(apache配置)
#
名称虚拟主机*
别名/media/home/blah/django_项目/Tickets/media
WSGIScriptAlias/d/home/blah/django_projects/Tickets/apache/django.wsgi
WSGIDaemonProcess exmaple_com user=blah group=blah PROCESS=1线程=10
WSGIProcessGroup示例_com
服务器管理员localhost@example.com
ServerName example.com
DocumentRoot/var/www/
选项-索引跟随符号链接-多视图-包括
不允许超限
命令允许,拒绝
通融
ErrorLog/var/log/apache2/error.log
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog/var/log/apache2/access.log组合
服务器签名关闭

这可能是的重复,因为答案解决了这个问题

我只是出于绝望才在这里打开了几乎所有的“相关问题”,最终才无意中找到了答案。从我的角度来看,我认为我的问题有一些很有价值的“搜索友好”词汇

编辑:答案:(通过)

尝试的事项:

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

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


  • 在您的url.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),
    )
    

    请不要删除你自己的问题(因为你提到的原因)。我相信管理员有可能取消删除你的帖子,但他们可能不会,即使保留下来会更好。但是,在强制等待期过后,请接受您自己的解决方案。不应该需要这样做,而且肯定不会推荐这样做,因为这意味着有两个URL指向同一资源,这是一种不好的做法。