2009-11-30 54 views
2

我正在部署一个新的Django站点来取代当前的WordPress博客。在我设置好之后,我想在将事情切换到根目录并“上线”之前,先测试域的子目录中的所有内容。例如:http://example.com/django/如何临时将django网站移动到子目录(用于测试)?

编辑我.htaccess文件允许但是我重定向事情顺利(我可以看到Django的网站和我的WordPress网站仍然有效),我不知道如何告诉Django查看http://example.com/django/作为BASE网址(而不仅仅是http://example.com/)...我尝试设置我的SITE域名,但没有帮助。

目前,我的所有网页都得到了404响应 - 它们不匹配任何网址格式(因为我的网址格式没有以django/开头)。

我寻找一种方法来设置一个BASE_URL但无法找到任何。想法?我只希望在我测试的一切,以确保其工作正常,然后在.htaccess文件交换设置和主站点上运行它这样做了几个小时。

回答

1

设置在你的Apache以下几点:

PythonOption django.root /django 

然后Django会修剪/django关每个URL请求的前面。要做到这一点

+0

嗯 - 我是一个共享的主机上,并使用FastCGI,我不相信我可以修改我的'httpd.conf'文件......你知道,副手,怎么做FastCGI的? (我使用Google,但没有看到...) – thornomad 2009-11-30 15:36:09

+1

看看http://www.djangobook.com/en/beta/chapter21/#cn133。如果你玩弄'ModRewrite'在那里做什么,那应该工作。或者,您可以在设置文件中设置一个'DJANGO_ROOT',并在堆栈的早期设置一个中间件,以便在每个请求中删除它的位置 – jcdyer 2009-11-30 16:30:26

0

一种方法是复制您当前mysite/mysite/urls.py调用它说betaurls.py每个URL前加/django/,从而

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 
urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
) 
urls.py

将成为

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 
urlpatterns = patterns('', 
    url(r'^django/admin/', include(admin.site.urls)), 
) 

在新文件betaurls.py然后,在settings.py文件,

012之间交替

ROOT_URLCONF = 'mysite.betaurls' 

所以/django/成为Django的部署新的根。