перенаправления Django Flatpage - PullRequest
       17

перенаправления Django Flatpage

1 голос
/ 26 октября 2009

Я хочу убедиться, что на всех моих страницах есть субдомен www, и перенаправить на него, если их нет.

Я смотрел некоторые промежуточные программы, которые перенаправляют на www, но (1) они обычно перенаправляют все URL-адреса на www и (2), те, которые я нашел, не работают с плоскими страницами.

Я не хочу, чтобы все URL моего сайта перенаправляли, включая поддомен www, только плоские страницы.

Кто-нибудь знает, как мне поступить?

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

В вашем файле urls.py сделайте что-то вроде этого:

urlpatterns = patterns('',
    (r'^flat/(?P<static>.*)$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.mysite.com/flat/%(static)s'}),
    # other stuff
)
0 голосов
/ 27 октября 2009

Один из вариантов - изменить промежуточное программное обеспечение, чтобы оно перенаправляло только если response.status_code == 404. Поместите промежуточное программное обеспечение непосредственно перед промежуточным программным обеспечением плоской страницы в settings.py. Это перенаправило бы

http://example.com/flatpage/ -> http://www.example.com/flatpage/

но также

http://example.com/invalidurl/ -> http://www.example.com/invalidurl/

перед возвратом ошибки 404.


Другой вариант - написать собственное промежуточное программное обеспечение для плоских страниц на основе официального. Вы можете увидеть код класса FlatpageFallbackMiddleware на сайте django .

В попытке, кроме блока, проверьте, существует ли плоская страница. Затем перенаправьте при необходимости. Если вы не перенаправляете, верните плоскую страницу.

...
try:
    fp = flatpage(request, request.path_info)

    # Code to redirect to www goes here

    return fp
except Http404:
...
...