Александр Марков
17 окт. 2015 г., 15:14

Как правильно организовать редирект?

Добрый день. Есть сайт, в котором на уровне .htaccess осуществляется редирект «без слеша на конце» -> «со слешем на конце». Если приходит запрос на несуществующую страницу без слеша на конце, то сначала отдается редирект на «со слешем на конце», а уже потом 404. Клиент просит сделать так, чтобы в этом случае сразу отдавался 404 ответ. Как лучше это сделать?
Зачем эти редиректы? Ставишь MetaX, или просто сам прописываешь meta canonical=…
т.е. для SEO этого достаточно? Он мне просто вот что написал:
Если несуществующая страница без сэша на конце, то сначала идет 301 на нее же со слэшем, затем выдается 404. Все несуществующие страницы должны отдавать 404 сразу, иначе они не удаляются из индекса.
Этот сайт я в прошлом году переносил (stroyriv.ru)
Я не большой специалист, но думаю, раз уж редирект идет на уровне .htaccess, то нужно в него залезть и убрать часть, отвечающую за второй редирект. Выглядит это приблизительно вот так:
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
Это не поможет. .htaccess просто приводит IRL к заданному виду, не проверяя, есть такая страница или нет.
Вообще не вижу причин, по которым страница в таком случае не должна удаляться из индекса. В итоге ведь 404 все равно. Все удалится, не беспокойтесь. Редирект с www на без www точно так-же сначала перекинет, а потом скажет, что страницы нет. Проблемы здесь нет. Поверьте.
Спасибо за ответы. Убедил заказчика не наворачивать лишнего :)
canonical — это для существующих страниц. Для не существующих, как и написали раньше, не важно есть редирект или нету, все равно они выпадут.

Добавить комментарий