django urlconf或.htaccess麻烦

时间:2010-03-29 09:48:39

标签: django .htaccess django-urls

我正在从网站的子文件夹运行我的django项目。让我们说我的项目打开的地址是。

http://example.com/myproject/

myproject文件夹是我的用户帐户的根文件夹。在该文件夹中,我有启动项目的fcgi脚本。文件夹中的.htaccess文件包含:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]

麻烦的是,在某些情况下,而不是将用户重定向到像

这样的页面
http://example.com/myproject/social/someurl/

重定向到

http://example.com/social/someurl/

哪个不起作用。我想知道的是如何解决这个问题。

重定向在django-socialauth(github.com/uswaretech/Django-Socialauth),socialauth.views.py第177行重定向没有/ myproject /,类似于上面的通用示例。我还在项目中使用django cms2.0,它将admin auth的用户重定向到example.com/en/myproject/admin/,而不是example.com/myproject/en/admin。但这可能是django cms的问题。

这种行为是django问题,我应该用urconf更改它并将myproject添加到所有网址,或者我应该用.htaccess执行此操作?我发现了类似的问题,遗憾的是,这个问题仍然没有答案: How to write .htaccess if django project is in subfolder and subdomain?

艾伦。

4 个答案:

答案 0 :(得分:0)

如果你尝试

怎么办?
RewriteRule ^(myproject/.*)$ mysite.fcgi/$1 [QSA,L]

答案 1 :(得分:0)

设置RewriteBase:

RewriteEngine On
RewriteBase /myproject/

答案 2 :(得分:0)

似乎django-cms-2.0使用中间件级别将语言环境前缀添加到URL。非常好。

但更有趣的是,他们使用resolve('pages-root')

为所有网址添加前缀

所以,您可以在urls.py中执行此操作,而不是......

if not settings.DEBUG:
    urlpatterns += patterns('',
       url(r'^myproject/$', details, {'slug':''}, name='pages-root')
    )

请确保在cms.urls之前附加上述urlpatter。

答案 3 :(得分:0)

在/urls_production.py

from django.conf.urls.defaults import *
urlpatterns = patterns('', 
    (r'^myproject/', include('urls')),
)

在/settings_production.py

from settings import *
ROOT_URLCONF = 'urls_production'

确保在服务器环境中将DJANGO_SETTINGS_MODULE设置为settings_production