@cubooks
Web-developer

Как заставить Apache или Yii отдавать 404 без 301?

Добрый день! Возник такой вопрос. Мы имеем сайт на Yii1. И мы хотим, чтобы к концу URL добавлялся слеш. Делаем мы это вот так:
# Enforce trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]


Все работает как надо, но есть одно НО! Если мы зайдем для фейковую страницу, например, site.ru/abrakadabra

То сначала сервер сделает 301 редирект на site.ru/abrakadabra, а потом отдаст 404 ошибку. Нам нужно, чтобы было просто 404.

P.S Сеошники сказали, что это важно.
P.S.S реализовывать средствами PHP?
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Вопрос старый и реторический, это не имеет отношение к движку.
ЭТо имеет отношение к парсеру кода ответа сервера, берет он последовательность кодов или последний.
По факту конечная 404 действительно отдаст несуществующую страницу и поисковик поймет что ее нет и пометит ее несуществующей, но сам урл редиректа может не моменить поскольку он отдает валидный ответ сервера.
Проверять в .htaccess код ответа можно но тем самым при каждом хите вам н ужно дождаться ответа сервера и только после этого вообще что-то произойдет. А посточнное динамичное перечтение этого файла может потенциально добавить гемороя.
ТАк что проверить код ответа через .htaccess я бы не рекомендовал.
и ТАК ЧТО МОЖНО СДЕЛАТЬ.
Первое это настроить трай файл и тд в nginx там для этого более богатый инструментарий да и коды ответа сервера он читает на лету, уж всяко получше чем в .htaccess
второе если с той стороны 404 то нахрена вам туда вести ?
если они там появляются динамически решите проблему у своего движка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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