Apache | Django:如何在基本URL的背面运行网站?

时间:2010-12-15 07:05:55

标签: django apache hosting web-hosting

我有一个基本网址。 http://baseurl.com/ 我正试图在它背面运行项目。例如 http://baseurl.com/mongoose/ 项目运行但URL无法正常运行,因为它们都是 引用基本网址。因此,对于“关于我”页面,它指向 http://baseurl.com/about代替http://baseurl.com/mongoose/about

这是我需要在django或apache中改变的吗?是我的意思 试图做甚至可能?

来自IIS .net背景我知道在IIS中你可以在一个站点内“创建和应用”,这实际上是我现在用Apache和Django实现的。

谢谢

2 个答案:

答案 0 :(得分:1)

你不需要做任何事情。 Apache应该设置一个名为SCRIPT_NAME的请求标头,这是您的基本URL,所有URL反转都会考虑到这一点。

您如何在模板中创建这些网址?

更新

所以你的问题是获取Flatpages的URL。问题在于,动态计算网址的常规方式是使用SCRIPT_NAME函数或reverse()标记将{% url %}考虑在内,因此无法使用Flatpages,因为它们不是通过urls.py发送的,而是通过在404上触发的自定义中间件发送的。

因此,我不使用该中间件,而是使用urls.py机制调度到flatpages。从settings.py中删除flatpagemiddleware,在模式末尾的urls.py 中删除添加:

url(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage', name='flatpage'), 

现在,在您的模板中,您可以执行以下操作:

<a href="{% url flatpage page.url %}">

它应该可以正常工作。

答案 1 :(得分:0)

检查项目中的任何urls.py,看看他们是否期望成为顶级。但是如果应用程序输出像/something这样的链接,那么它就意味着根目录。应用程序应该将视图/参数反转为URL,这将允许您移动它。如果您编写了应用,请查看reverse

中的django.core.urlresolvers