我正在从网站的子文件夹运行我的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?
艾伦。
答案 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
。