Апач | Django: Как запустить веб-сайты на основе базового URL? - PullRequest
3 голосов
/ 15 декабря 2010

У меня есть базовый URL. http://baseurl.com/ Я пытаюсь запустить проекты на заднем плане. Например http://baseurl.com/mongoose/ Проекты работают, но URL не работают должным образом, потому что все они ссылка на базовый URL. Так что для страницы «О себе» это указывает на http://baseurl.com/about вместо http://baseurl.com/mongoose/about

Это то, что мне нужно изменить в django или apache? Это то, что я пытаться сделать даже возможно?

Исходя из фона IIS .net Я знаю, что в IIS вы можете "создавать и применять" на сайте, который, по сути, делает то, чего я сейчас пытаюсь достичь с Apache и Django.

Спасибо

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Вам не нужно ничего делать. Предполагается, что Apache устанавливает заголовок запроса с именем SCRIPT_NAME, который является вашим базовым URL, и все обращения URL учитывают это.

Как вы создаете эти URL в своих шаблонах?

Обновление

Итак, ваша проблема с получением URL-адресов Flatpages. Проблема заключается в том, что обычный способ динамического вычисления URL-адресов, который учитывает SCRIPT_NAME - с помощью функции reverse() или тега {% url %} - не работает с Flatpages, поскольку они не отправляются через URL .py, но через пользовательское промежуточное ПО, которое запускается на 404.

Таким образом, вместо использования этого промежуточного программного обеспечения, я бы использовал механизм urls.py для отправки на плоские страницы. Удалите flatpagemiddleware из вашего settings.py, и в urls.py в конце ваших шаблонов добавьте это:

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

Теперь в ваших шаблонах вы можете сделать:

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

и он должен работать правильно.

0 голосов
/ 15 декабря 2010

Отметьте любые urls.py в проекте (ах), чтобы увидеть, ожидают ли они верхнего уровня.Но если приложение выводит ссылки типа /something, то это будет означать корневой каталог.Приложение должно перевернуть представление / параметр в URL, что позволит вам перемещать его.Если вы написали приложения, проверьте reverse в django.core.urlresolvers

...