django urlconf или .htaccess проблема - PullRequest
0 голосов
/ 29 марта 2010

Я запускаю свой проект 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), строка 177 socialauth.views.py перенаправляет без / myproject /, аналогично общему примеру выше. Я также использую django cms2.0 в проекте, и он перенаправляет пользователя с правами администратора на example.com/en/myproject/admin/, а не example.com/myproject/en/admin. Но это может быть проблемой Django CMS.

Это проблема с поведением django, и я должен изменить ее с помощью urconf и добавить myproject ко всем URL-адресам, или я должен сделать это с помощью .htaccess? Я нашел похожий вопрос, который, к сожалению, остается без ответа: Как написать .htaccess, если проект django находится в подпапках и поддоменах?

Алан.

Ответы [ 4 ]

0 голосов
/ 07 апреля 2010

В /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 в среде сервера.

0 голосов
/ 02 апреля 2010

Установить RewriteBase:

RewriteEngine On
RewriteBase /myproject/
0 голосов
/ 07 апреля 2010

Кажется, что django-cms-2.0 добавляет префикс локали к URL-адресу, используя уровень промежуточного программного обеспечения. Очень хорошо, действительно.

Но что более интересно, они префиксят весь URL-адрес, используя resol ('pages-root')

Итак, вы можете сделать это в urls.py вместо ...

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

Просто убедитесь, что вы добавили вышеупомянутые urlpatterns перед cms.urls.

0 голосов
/ 29 марта 2010

Что делать, если вы попробуете

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