Нужен ли htaccess django?

Сейчас столкнулся с тем, что обычно прописывал редиректы в файле htaccess для php проектов. Поэтому два вопроса:

1) нужен ли этот файл для django? Есть да, то как с ним работать?
2) Если нет, то как прописывать редиректы?
  • Вопрос задан
  • 829 просмотров
Решения вопроса 1
sim3x
@sim3x
так как написал Виктор Мельников не делай никогда

Апач никто не использует -- nginx + uwsgi (gunicorn)
Перенаправление происходит в nginx
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
По поводу редиректов, в django для этого есть приложение redirects https://docs.djangoproject.com/en/1.9/ref/contrib/..., но стоит уточнить, что редирект работает только в том случае если начальная ссылка отдает 404. Дальше для редиректа на WWW в settings.py PREPEND_WWW = True Для обратного случая пишется middleware к примеру вот такой.
class UrlMiddleware(object):

	def process_request(self, request):
	    host = request.get_host()
	    old_url = [host, request.path]
	    new_url = old_url[:]
	    
	    if (settings.REMOVE_WWW and old_url[0] and old_url[0].startswith('www.')):
	        new_url[0] = old_url[0][4:]
	    
	    if new_url != old_url:
	        try:
	            urlresolvers.resolve(new_url[1])
	        except urlresolvers.Resolver404:
	            pass
	        else:
	            if new_url[0]:
	                newurl = "%s://%s%s" % (
	                    request.is_secure() and 'https' or 'http',
	                    new_url[0], urlquote(new_url[1]))
	            else:
	                newurl = urlquote(new_url[1])
	            if request.GET:
	                newurl += '?' + request.GET.urlencode()
	            return http.HttpResponsePermanentRedirect(newurl)
	    return None

и в settings пишите REMOVE_WWW = True, для редиректа на слэш APPEND_SLASH = True , на слэш опять таки будет работать только в случае если без слэша отдает 404.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы