Нужен или нет слэш в конце url
Очень часто начинающие веб архитекторы, ну или строители как вам больше нравится, задаются вопросом, как оформлять адрес сайта. Одна из делем нужнен ли слэш в конце url. Нужен или нет — это вопрос неоднозначный, и вы можете до хрипоты спориться с каким-нибудь гуру, и так и не придете к единому мнению. Но одно вам скажу точно. Нужно выбирать или так или эдак. Иначе поисковик одну и ту же страницу проиндексирует дважды. И для, например, Яндекса это будут две разные по адресу страницы с идентичным текстом. Соответственно поисковые системы могут подумать (не удивлюсь что они уже умеют это делать) что страница не очень важна раз существует дубль.
Для поисковиков важна уникальность текста — это аксиома, которая не нуждается в пояснении. Но иногда, ошибки движка, могут (особенно этим грешит WordPress) свести на нет весь труд владельца сайта. Дубли страниц — это бич многих CMS. Мы в своем продукте эту проблему решили раз и навсегда.
Слэш в конце URL
Итак, чтобы добавить слэеш в конец url, в самом начале вашего индексного файла или файла единой точки входа, добавьте следующий код
$exp = explode('?', $_SERVER['REQUEST_URI']); if ( mb_substr($exp[0], -1) != '/' ) { header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . $exp[0] . '/' . (!empty($exp[1]) ? '?' . $exp[1] : '')); exit(); }
Немного пояснения. Код проверяет если слэш или нет и если его нет то происходит 301 редирект на версию со слэшем
Удаление слэша
$uri = preg_replace("/?.*/i",'', $_SERVER['REQUEST_URI']); if (strlen($uri)>1) { if (rtrim($uri,'/')!= $uri) { header("HTTP/1.1 301 Moved Permanently"); header('Location: https://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI'])); exit(); } }
Тут происходит то же самое с той лишь разницей что редирект происходить на вариант без слэша
Как видите ничего сложного тут нет. Но предупреждаю, на простеньком хостинге могут возникнуть проблемы из-за редиректа. Например, на Бегете, на тарифе старт, у меня такая проблема возникла. Но после перехода на VPS она решилась сама собой.
Кстати рекомендую переходить на выделенный сервер. Это хоть и немного проблематично в обслуживании, зато имеет много плюсов. Как это сделать в следующих статьях.