Как убрать слэш в конце url
Перейти к содержимому

Как убрать слэш в конце url

Как удалить/добавить слэш в конце URL через .htaccess

Как удалить/добавить слэш в конце URL через .htaccess

Наверняка, многие из Вас понимают, что в большинстве случаев «http://mysite.ru/dir» и «http://mysite.ru/dir/» откроют одно и то же. Но это лишь в большинстве случаев, а не всегда. Если идёт обработка REQUEST_URI через PHP, то там может иметь огромное значение наличие или отсутствия слэша в конце URL. И очень важно привести весь сайт к единому стандарту, чтобы было либо со слэшем на конце, либо без. Вот как удалить слэш на конце URL через .htaccess, а также как его добавить, я расскажу в этой статье.

Я приведу 2 кода, один всегда удаляет слэш на конце URL, а другой всегда добавляет. Начнём с 1-го варианта:

RewriteEngine On
RewriteBase /
RewriteCond % (.*)
RewriteCond % /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

Теперь если пользователь введёт «http://mysite.ru/dir/» его автоматически перенаправит на «http://mysite.ru/dir«. Разумеется, все GET-параметры сохранятся. Например, если пользователь вводил: «http://mysite.ru/dir/?a=5&b=7«, то его перенаправит по такому адресу «http://mysite.ru/dir?a=5&b=7«.

А сейчас давайте рассмотрим вариант, когда нам обязательно нужен слэш в конце URL, то есть чтобы при вводе «http://mysite.ru/dir» был автоматический переход на «http://mysite.ru/dir/«:

RewriteEngine On
RewriteBase /
RewriteCond % !-f
RewriteCond % !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

С этим кодом в .htaccess слэш будет добавляться автоматически в конце URL.

Теперь Вы знаете, как удалять и добавлять слэш в конце URL через .htaccess. И Вам нужно лишь определиться, какой вариант Вам больше нравится, потому что никакой принципиальной разницы между ними нет.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 13 ):

Скажите, а можно через ".htaccess" удалить расширения файлов, к примеру было mysite.php а стало просто mysite?

Здравствуйте, а как убрать расширение файла и добавить слеш в конце? Делаю так RewriteEngine on RewriteBase / RewriteCond % ^www.malinichev.ru$ [NC] RewriteRule ^(.*)$ http://malinichev.ru/$1 [R=301,L] RewriteCond % !-f RewriteCond % !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301] RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L] но получается malinichev.ru/pass/.php/ как сделать нормально? Скажите пожалуйста

Добрый день. Была такая проблема, слеш на конце ссылок. Все сделал как вы написали..все работает. Но перестало заходить в админку. Joomla. там видимо на конце тоже слеш. Как быть в таком случае?

Как быть в таком случае? Не использовать CMS.

"На этой странице обнаружена циклическая переадресация" круто работает — не работает!

Скажите, а как мне добавить слеш в конце для opencart, данный код не работает

Здравствуйте. Подскажите пожалуйста в следующей ситуации: Есть вёрстка html5+CSS Первоначально была задача, избавиться через .htaccess от расширения php на конце URL Для этого прописал в .htaccess следующее: RewriteEngine On RewriteCond % !-f RewriteCond % !-d RewriteCond %.php -f RewriteRule ^.*$ $0.php [L,QSA] RewriteCond % ([^\s]*)\.php(\?[^\s]*)? RewriteRule (.*) %1 [R=301,L] Всё заработало отлично! Но, при постепенном наполнении сайта контентом возникла следующая ситуация: Есть страница http://мойсайт/razdel1 Получить для дочерней страницы родителем которой является razdel1 новый URL допустим http://мойсайт/razdel1/katalog Для этого в корневой директории сайта создаю разумеется директорию razdel1 в неё копирую индексный файл, и меняю основной контент, после чего переименовываю файл под таким именем katalog.php На выходе я получаю мою новую страницу http://мойсайт/razdel1/katalog и всё отлично на конце нет слэша изначально это добивалось. Но пеерстала работать старница под этим URL http://мойсайт/razdel1 Точнее открывается содержимо директории razdel1 а мне нужно чтобы открывался по прежнему файл из осноной директории razdel1.php Посоветуйте что можно сделать чтобы открывались обе страницы по желаемым мне URL адресам Пробовал вариант когда в директории razdel1 создаю индексный файл и он открывает всё верно, и вторая новая страница работает, но открытие этой страницы http://мойсайт/razdel1 содержит на конце слэш а он по всему сайту не нужен… как в таком случае от него можно избавиться, и при этом переадресация с .php на без слэша тоже сохранилась?

Здравствуйте! Подскажите, пожалуйста, как сделать исключения для страниц с Get параметрами: т.е., везде на сайте со слешем в конце url, а на страницах с Get параметрами — без. Например: www.site.ru/catalog/ и www.site.ru/login (уже без слеша), чтобы можно было добавлять страницы в такие исключения. Спасибо!

Добрый день. Подскажите, что может быть не так — использовал ваши рекомендации по удалению слеша. Результат такой: www.site.ru/catalog, а вот для главной такой — www.site.ru/ Не убирается слеш индексной страницы.

Тя кто моды учил писать!? Не парь людям мозги, чтоб они потом сайты не лопатили, искали ошибку. НАРОД, КТО JOOMLA ИСПОЛЬЗУЕТ . Не вздумайте вставить эту ахинею, если у вас регистрация присутствует. RewriteCond % (.*) RewriteCond % /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]

Ребят, скажите, а реально сделать, чтобы http://site.ru/contacts.php открывался как http://site.ru/contacts/ Т.е ссылка то выглядит как ссылка на директорию contacts, но это файл. Или по старинке в папку contacts поместить index.php?

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Добавляем или убираем слэш в конце URL .htaccess

Убираем слэш в конце URL и делаем 301 редирект на URL без слеша:

Обратная операция — добавляем слэш в конце URL и делаем редирект:

  • Метки

3 ответа к “Добавляем или убираем слэш в конце URL .htaccess”

Знакомые с PHP могут попробовать самостоятельно написать простой «интерпретатор» для URL. В результате чего увидят, что отслеживать слэш в конце URL не имеет смысла. Потому создатели CMS (редко) и фреймворков (практически всегда) отдают этот вопрос на решение разработчикам и вебмастерам конкретных сайтов. Большинство из нас именно является, самокритично выражаясь, пользователями готовых решений разной степени квалификации. Поэтому на нас ложится груз ответственности предусмотреть эту ситуацию и предохраниться от дубликатов.

RewriteEngine On
RewriteBase /
RewriteCond % !-f
RewriteCond % !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

Правка .htaccess на удаление слеша в конце и ошибка при входе в админку

Всем известно, что для поисковой оптимизации контент страниц должен быть уникальным. Тем не менее даже если вы честно написали для каждой страницы свой текст, могут появиться дубли, которые возникают из-за генерации адресов со слешем и без слеша. Для пользователя это неважно, а вот поисковые машины воспримут такие страницы как разные, но с одинаковым контентом.

Чтобы проверить, есть ли такая проблема у вашего сайта, нужно просто забить его адрес со слешем и без слеша на конце («http://www.mysite.ru/page.html» и «http://www.mysite.ru/page.html/»). Если существуют обе страницы, это негативным образом сказывается на ранжировании.

Эту проблему можно решить правкой файла .htaccess (он лежит в корне сайта). Нужно открыть файл и добавить туда следующий код:

Теперь слеши на конце будут удаляться.

Как убрать переадресацию с админки (ошибка ERR_TOO_MANY_REDIRECTS)

После удаления слешей при входе в админку иногда возникает ошибка: «На этой странице обнаружена циклическая переадресация
ERR_TOO_MANY_REDIRECTS». Это из-за того, что ее адрес должен быть со слешем. Тогда нужно добавить еще строчку, исключающую удаление слеша из адреса админки:

(вместо admin прописывается адрес к админке, например, в WordPress это wp-admin, в modx — manager).

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *