301 редирект для удаления/добавления слэша в конце url

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

Вы здесь: Главная — PHP — PHP Основы — Как удалить/добавить слэш в конце URL через .htaccess

Наверняка, многие из Вас понимают, что в большинстве случаев «http://mysite.ru/dir» и «http://mysite.ru/dir/» откроют одно и то же. Но это лишь в большинстве случаев, а не всегда.

Если идёт обработка REQUEST_URI через PHP, то там может иметь огромное значение наличие или отсутствия слэша в конце URL. И очень важно привести весь сайт к единому стандарту, чтобы было либо со слэшем на конце, либо без.

Обратите внимание

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

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

RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [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 %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*[^/])$ $1/ [L,R=301]

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

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

Предыдущая статья Следующая статья

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

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

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

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

Важно

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

  1. Кнопка:

    Она выглядит вот так:<\p>

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Источник: https://MyRusakov.ru/php-slash-url.html

Автоматически добавить слеш в конце url htaccess

Привет. Сегодня рассмотрим важную тему для продвижения. Как добавить слеш в конце url htaccess.

Для начала рассмотрим зачем нужно добавлять слеш в конце url htaccess. Во многих самописных сайтах, и даже многих CMS есть такая беда: ссылка сработает как в виде site.com/url так и в виде site.com/url/. Поисковые роботы будут считать эти ссылки разными, а контент на них одинаковым. Это плохо, дубликаты страниц — враг продвижения.

Что же делать, чтобы избежать дублей?

Трансформировать все ссылки в ссылке, где есть слеш в конце url htaccess. При этом, как следует из заголовка, делать это будет автоматически htaccess, то есть от вас потребуется только скопировать код один раз и всё.

Тем временем, рекомендую всем задуматься над покупкой страховки для вашего авто. Полис ОСАГО и диагностическая карта ОСАГО — вот что нужно дял безопасности дорожного дивжения. Заказал на сайте и поехал.

Как добавить слеш в конце url htaccess

Делается это очень просто.
Просто скопируйте и вставте код в файл .htaccess в корне вашего сайта.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.html)
RewriteCond %{REQUEST_URI} !(.jpg)
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.your-site.ru/$1/ [L,R=301]

Но не забудьте изменить your-site.ru на адрес вашего сайта.
Также обратите внимание, что если у вас главное зеркало сайта без www, то и в коде ссылку нужно делать на без www. Подробнее о том как сделать переадресацию с www на без www.

Рассмотрим немного подробнее код, который добавит слеш в конце url htaccess.

Строкой

RewriteEngine on

Мы говорим Apache, что будем работать с mod_rewrite.

RewriteBase /

Указывает базу для работы. Например, если ваш сайт лежит в подпапке site.com/subfolder/, то RewriteBase должен быть /subfolder/.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.html)
RewriteCond %{REQUEST_URI} !(.jpg)

Тут мы исключаем из дальнейшей работы запросы к файлам, и особенно .html и .jpg (список можно расширить), для того, чтобы в конце ссылок на html файлы не добавлялся слеш.

RewriteCond %{REQUEST_URI} !(.*)/$

Самое важное условие, которое проверяет, что в конце ссылки нет слеша.

RewriteRule ^(.*)$ http://www.your-site.ru/$1/ [L,R=301]

Ну и действие, которое выполнится, если пройдут все условия. То есть 301 редирект на страницу со слеш в конце.

Понравилась или помогла статья?
Купите мне кофе

Источник: https://htmler.ru/2015/03/30/avtomaticheski-dobavit-slesh-v-kontse-url-htaccess/

Дубли страниц: как добавить или убрать завершающий слеш в конце URL

Неприятность относится к области SEO (поисковой оптимизации), а именно: к дублям страниц. В отличие от случая с дублированием по www, у этого варианта больше шансов остаться незамеченным. Часто внутренние подсистемы обработки запросов самописных (а то и публично известных) фреймворков и CMS просто берут в расчет только то, что между слэшами.

Далеко за примером ходить не надо, возьмем тот же Zend Framework. Внутри этого фреймворка реализована своя система маршрутизации, в зависимости от URL-адреса, по которому обращаются к сайту.

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

Совет

php, внутри которого подключаются уже классы и начинает работать программная маршрутизация, распарсивая URL на части и определяя тем самым, какие классы и методы в них надо вызывать.

Например, по-умолчанию (без подробностей, объясню попроще), адрес вида http://site.ru/user/register/form/ означает, что системе следует найти модуль «user», внутри которого содержится класс со специфическим именем «RegisterController» и у этого класса вызвать метод «form()».

Но беда в том, что для определения дальнейших действий в ход идут исключительно составные части адреса, без слэшей: user, register, form. И даже если мы уберем слэш в конце URL, то получим те же самые параметры, и результат работы сайта будет тот же самый. А адреса http://site.ru/user/register/form/ и http://site.ru/user/register/form — равноценными, по которым находятся дубли страниц.

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

Большинство из нас именно является, самокритично выражаясь, пользователями готовых решений разной степени квалификации. Поэтому на нас ложится груз ответственности предусмотреть эту ситуацию и предохраниться от дубликатов.

Добавить завершающий слэш через .htaccess

RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Удалить завершающий слэш через .htaccess

RewriteBase / RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]

Вышеприведенные решения работают только для простых случаев (у меня, например). Если у вас в .htaccess уже полно всяких RewriteRule, то могут возникнуть конфликты между правилами. Тогда следует позвать специалиста и разбираться отдельно в каждом конкретном случае.

ПОЛЕЗНО  Сжатие (gzip) CSS и JS скриптом

Удалить слеш программно (PHP)

// Получаем URI для проверки $uri = preg_replace(«/?.*/i»,'', $_SERVER['REQUEST_URI']); if (strlen($uri)>1) {// если не главная страница… if (rtrim($uri,'/')!=$uri) { header(«HTTP/1.1 301 Moved Permanently»); header('Location: http://'.

$_SERVER['SERVER_NAME'].

str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI'])); exit(); } }

Для Joomla надо учесть наличие админ-интерфейса по адресу /administrator/ — там лучше не редиректить, а то циклическое перенаправление получается (код вставлять в начало index.php):

$uri = preg_replace(«/?.*/i»,'', $_SERVER['REQUEST_URI']); if ((!strpos($uri, 'administrator')) && (strlen($uri)>1)) { if (rtrim($uri,'/')!=$uri) { header(«HTTP/1.1 301 Moved Permanently»); header('Location: http://'.$_SERVER['SERVER_NAME'].

str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI'])); exit(); } }

Добавить слеш программно (PHP)

// Получаем URI для проверки $uri = preg_replace(«/?.*/i»,'', $_SERVER['REQUEST_URI']); if (strlen($uri)>1) {// если не главная страница… if (rtrim($uri,'/').»/»!=$uri) { header(«HTTP/1.

1 301 Moved Permanently»); header('Location: http://'.$_SERVER['SERVER_NAME'].

str_replace($uri, $uri.'/', $_SERVER['REQUEST_URI'])); exit(); } }

Для Joomla лучше не маяться и не ставить завершающий слеш (а, наоборот, убирать). Из-за того, что

Источник: http://coding.dp.ua/optimizatsiya/619-dubli-stranits-kak-dobavit-ili-ubrat-zavershayushhiy-slesh-v-kontse-url.html

Файл htaccess

синтаксис htaccess примеры редиректов

В начало .htaccess ставят:

RewriteEngine On RewriteBase /

Первая строка включает обработку правил, вторая — обрезает полный путь (от корня сервера) до корня сайта.
/home/papka-s-saitom/public_html/razdel/podrazdel/ — таким был путь до RewriteBase /
/razdel/podrazdel/ — таким станет после

Благодаря «RewriteBase /» удобнее делать преобразования URI (убирается привязка к физическому расположению файлов сайта на сервере).

Давайте рассмотрим самые распространенные примеры:

1. Простой редирект

Для простого редиректа условия задавать не обязательно, только правило.

RewriteRule ^news/happy.* /news.html [R=301,L]

2. Реврайт без редиректа

Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу news/happy получим news.html, а в адресной строке останется news/happy

RewriteRule ^news/happy.* /news.html [L]

3. Редирект с сохранением рейтинга страницы

Redirect 301 /old/old.php http://www.site.com/new.php

4. Редирект для домена с www.site.com на site.com

RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Убираем у всех запросов вначале «WWW.»

RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]

5. Редирект для домена с site.com на www.site.com

RewriteCond %{HTTP_HOST} !^www.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Другой вариант

RewriteCond %{HTTP_HOST} ^site.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

6. Редирект с index.php (html,htm) на главную страницу

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/ RewriteRule ^(.*)index.(php|html|htm)$ $1 [R=301,L]

7. Редирект с index.html на папку (удаление из строки браузера index.html)

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*index.html? HTTP/ RewriteRule ^(.*)index.html?$ http://www.site.com/$1 [R=301,L]

8. Заменить все .htm файлы на .html файлы

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*).htm$ $1.html [R=301,L]

Другой вариант

RewriteRule ^(.*).htm$ $1.html [R=301]

9. Чтобы вместо page.htm загружался файл page.html

RewriteRule ^page.htm$ page.html [R=301]

10. Переезд с одного домена на другой

RewriteCond %{HTTP_HOST} site.com RewriteRule (.*) http://site.com/$1 [R=301,L]

11. Редирект всех файлов в папке на один файл

Например вы больше не нуждаетесь в разделе сайта «old» и хотите перенаправить все запросы к папке /old на один файл /new.php. Для этого добавляем в .htaccess следующий код.

RewriteRule ^old(.*)$ /new.php [L,R=301]

12. Задание типа индексной страницы (php, html, htm и другие)

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

DirectoryIndex index.html index.php index.htm index.shtml

Проверяем доменное имя, если оно начинается с www, то сработает правило: «все, на http://%1/$1». Здесь %1 это наш домен без www (взят из условия), а $1 это адрес (взят из самого правила).

13. Убираем у всех запросов в конце index.php. Переадресуем на страницу без index.php

Поисковые системы плохо относятся к дубрям страниц. Чтобы этого избежать нужно удалить (склеить) страницы вида http://ваш_домен/ и http://ваш_домен/index.php

RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1 [R=301,L]

14. Определение кодировки, в которой сервер «отдает» файлы

AddDefaultCharset windows-1251

Варианты: KOI8-R, UTF-8, Windows-1251

15. Определение кодировки на загружаемые файлы

CharsetSourceEnc windows-1251

Варианты: KOI8-R, UTF-8, Windows-1251

16. Кэширование для всех типов файлов по времени доступа

ExpiresActive on ExpiresDefault «access plus 600 seconds»

17. Кэширование для всех типов файлов по времени изменения

ExpiresActive on ExpiresDefault «modification plus 600 seconds»

18. Кэширование для определённых типов файлов

ExpiresByType text/css «modification plus 600 seconds» ExpiresByType image/jpeg «modification plus 600 seconds» ExpiresByType image/gif «modification plus 600 seconds» ExpiresByType image/x-ico «modification plus 600 seconds» ExpiresByType image/png «modification plus 600 seconds»

19. Главная страница без дублирования

Обычно код главной страницы физически расположен в файле index.html или index.php, но сайт должен открываться по любому из запросов: site.com, site.com/index.html, www.site.com и www.site.com/index.html.

Но для поисковых систем это четыре разных URL! Если не настроить .htaccess верно, поисковик добавит в свой индекс четыре одинаковых страницы. Это признак некачественного сайта.

Избежать этой проблемы можно с помощью такого кода в .htaccess:

Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^site.com RewriteRule (.*) http://www.site.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/ RewriteRule ^index.html$ http://www.site.com/ [R=301,L]

20. Редирект страниц без слэша в конце URL на слеш

Чтобы предотвратить ситуацию с индексированием страниц www.site.com/about и www.site.com/about/ как разных, ставим следущий код: Со страниц без слэша будет установлен редирект на «слэшевые».

RewriteCond %{REQUEST_FILENAME} ! RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ /$1/ [R=301,L]

Другой вариант

RewriteCond %{REQUEST_URI} !(.*)/$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !..+$ RewriteRule ^(.*)$ $1/ [L,R=301]

21. Принудительная постановка замыкающего слеша

Следующий код всегда будет добавлять слеш в адрес URL вашего сайта, что хорошо помогает в области SEO сайта.

RewriteCond %{REQUEST_URI} /+[^.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

22. Удалить слеш в конце

RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]

23. Удаляем «category» из URL

Для изменения ссылки site.com/category/blue на site.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.

RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]

24. Редирект URL страницы с папки в корень сайта

Например страница лежит на сервере в site.com/category/blue.html, но надо чтобы страница работала по запросу site.com/blue.html

RewriteCond %{DOCUMENT_ROOT}/category/$1 -f RewriteRule ^(.*)$ category/$1 [L,QSA]

25. Редирект от GET параметров

Например, нужно что бы со страницы /?action=page&id=15 был редирект на /page/15/

RewriteCond %{QUERY_STRING} action=page [NC] RewriteCond %{QUERY_STRING} id=(d+) [NC] RewriteRule .* /page/%1/? [R=301,L]

26. Редирект на мобильную версию сайта

Допустим, что мобильная версия расположена на поддомене m.site.com. Будем переходить на мобильную версию только с главной страницы основного домена.

RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) [NC] RewriteCond %{HTTP_HOST} site.com RewriteRule ^$ http://m.site.com/ [R=302,L]

Первой строкой мы проверяем USER_AGENT, определяем что он относится к мобильникам. (эту строку я детально не проверял, взял на просторе интернета, возможно она не совсем корректная, или есть более универсальная строка. Но на моих мобильных устройствах этот пример работает)

Обратите внимание

Второй строкой проверяем что мы находимся на нужном домене (т.к. пример не универсальный)

Третьей строкой, мы проверяем, что находимся на главной страницы (без всяких параметров и прочего) и перенаправляем на поддомен.

27. Редирект на мобильную версию сайта (Универсальная версия)

RewriteCond %{HTTP_HOST} ^(.

*)$ [NC] RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) [NC] RewriteRule ^$ http://m.%1 [R=302,L]

28. Обработка ошибок Apache

ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html

29. Сохранение (загрузка) файлов вместо открытия

Многие видели, как при попытке скачать архив с расширением .rar браузер открывает его в виде простого текста из мешанины символов. Это значит, что на сервере сайта не настроено принудительное сохранение типов файлов, которые не должны открываться в браузере.

AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

30. Переадресация с www.site.com/index.php?idc=4&marea=6 на www.site.com/

RewriteCond %{QUERY_STRING} ^idc=4&marea=6$ [NC]RewriteRule ^index.php$ /? [R=301,L]

31. Редирект с поддомена на основной домен второго уровня

RewriteCond %{HTTP_HOST} ^test.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com%{REQUEST_URI} [R=301,NC,L,QSA]

32. Изменяем переменные php и передаём обработку другому скрипту

RewriteCond %{QUERY_STRING} ^parameter=(.+)$ RewriteRule (.*) parameter.php?%1 [L]

В этом примере запрос вида: index.php?parameter=some
преобразуется в: parameter.php?some

33. Убираем переменные php из запроса

(вырезаем из URI всё, что находится после знака вопроса)

RewriteRule (.*) $1? [R=301,L]

34. Заперт входа на сайт

Запрещаем вход на сайт Интернет Експлореру (вернее, кто себя так определяет) и пользователям с определённого IP-адреса (xxx.xxx.xxx.xxx).

RewriteCond %{HTTP_USER_AGENT} MSIE RewriteCond %{REMOTE_ADDR} ^xxx.xxx.xxx.xxx$ RewriteRule ^.*$ — [F]

35. Закрываем от всех

deny from all

36. Закрываем конкретный файл от всех

deny from all

37. Разрешаем доступ только с одного ip

order deny,allow deny from all allow from 192.111.37.125

38. Запрещаем доступ с конкретных ip

order allow,deny allow from all deny from 192.111.35.122 deny from 192.111.37.171

39. Убираем из Урла (URL) расширение файла

RewriteCond %{REQUEST_FILENAME} ! RewriteCond %{REQUEST_FILENAME}.html RewriteRule ^(.*)$ $1.php

php можно заменить другим расширением. Например: html, htm, shtml, asp

40. При запросе файла .htaccess говорим, что он не существует (410, GONE)

RewriteRule ^/.htaccess$ — [G]

Другой метод

RewriteRule ^/.htaccess$ — [F]

41. Запрещаем отображать содержимое директории, если нет индексного файла

Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.

Options -Indexes

42. Перенаправление с HTTPS на http

RewriteCond %{HTTPS} on RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

43. Редиректы в зависимости от времени

Когда нужно применять уловки типа содержания зависящего от времени масса вебмастеров все ещё используют CGI скрипты которые производят редиректы на специальные страницы. Как это может быть сделано через mod_rewrite?

Есть много переменных названных TIME_xxx для условий редиректа.

В связке со специальными лексикографическими образцами для сравнения STRING и =STRING мы можем производить редиректы зависящие от времени:RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700 RewriteCond %{TIME_HOUR}%{TIME_MIN}

Теперь все запросы к вашим старым URL-ам будут вызывать redirectold.php, который найдет новый URL и вернет 301 ответ с вашей новой ссылкой.

47. Красивый листинг каталогов

# ENABLE INDEXING Options +Indexes

# INDEX OPTIONS IndexOptions +Charset=UTF-8 +FancyIndexing +IgnoreCase +FoldersFirst +XHTML +HTMLTable +SuppressRules +SuppressDescription +NameWidth=* +IconsAreLinks

# META VIEWPORT IndexHeadInsert «»

# HIDE /listing DIRECTORY IndexIgnore .htaccess /listing

# GENERAL ICONS (BLANK, DIRECTORY, PARENT DIRECTORY)

AddIcon /data/listing/icons/blank.png ^^BLANKICON^^ AddIcon /data/listing/icons/folder.png ^^DIRECTORY^^ AddIcon /data/listing/icons/folder-home.png .. AddIconByType (TXT,/data/listing/icons/text.

png) text/* AddIconByType (IMG,/data/listing/icons/image.png) image/* AddIconByType (SND,/data/listing/icons/audio.png) audio/* AddIconByType (VID,/data/listing/icons/video.

png) video/*<\p>

# EXTENSION SPECIFIC ICONS

AddIcon /data/listing/icons/archive.png .7z .bz2 .cab .gz .tar AddIcon /data/listing/icons/audio.png .aac .aif .aifc .aiff .ape .au .flac .iff .m4a .mid .mp3 .mpa .ra .wav .wma .f4a .f4b .oga .ogg .xm .it .s3m .mod AddIcon /data/listing/icons/bin.png .bin .hex AddIcon /data/listing/icons/bmp.png .bmp AddIcon /data/listing/icons/c.png .

c AddIcon /data/listing/icons/calc.png .xlsx .xlsm .xltx .xltm .xlam .xlr .xls .csv AddIcon /data/listing/icons/cd.png .iso AddIcon /data/listing/icons/cpp.png .cpp AddIcon /data/listing/icons/css.png .css .sass .scss AddIcon /data/listing/icons/deb.png .deb AddIcon /data/listing/icons/doc.png .doc .docx .docm .dot .dotx .dotm .log .msg .odt .pages .rtf .tex .

wpd .wps AddIcon /data/listing/icons/draw.png .svg .svgz AddIcon /data/listing/icons/eps.png .ai .eps AddIcon /data/listing/icons/exe.png .exe AddIcon /data/listing/icons/gif.png .gif AddIcon /data/listing/icons/h.png .h AddIcon /data/listing/icons/html.png .html .xhtml .shtml .htm .URL .url AddIcon /data/listing/icons/ico.png .

ico AddIcon /data/listing/icons/java.png .jar AddIcon /data/listing/icons/jpg.png .jpg .jpeg .jpe AddIcon /data/listing/icons/js.png .js .json AddIcon /data/listing/icons/markdown.png .md AddIcon /data/listing/icons/package.png .pkg .dmg AddIcon /data/listing/icons/pdf.png .pdf AddIcon /data/listing/icons/php.png .php .phtml AddIcon /data/listing/icons/playlist.

png .m3u .m3u8 .pls .pls8 AddIcon /data/listing/icons/png.png .png AddIcon /data/listing/icons/ps.png .ps AddIcon /data/listing/icons/psd.png .psd AddIcon /data/listing/icons/py.png .py AddIcon /data/listing/icons/rar.png .rar AddIcon /data/listing/icons/rb.png .rb AddIcon /data/listing/icons/rpm.png .rpm AddIcon /data/listing/icons/rss.png .

Важно

rss AddIcon /data/listing/icons/script.png .bat .cmd .sh AddIcon /data/listing/icons/sql.png .sql AddIcon /data/listing/icons/tiff.png .tiff .tif AddIcon /data/listing/icons/text.png .txt .nfo AddIcon /data/listing/icons/video.png .asf .asx .avi .flv .mkv .mov .mp4 .mpg .rm .srt .swf .vob .wmv .m4v .f4v .f4p .ogv AddIcon /data/listing/icons/xml.png .

xml AddIcon /data/listing/icons/zip.png .zip DefaultIcon /data/listing/icons/default.png

# listing FILES

HeaderName /data/listing/header.html ReadmeName /data/listing/footer.html IndexStyleSheet «/data/listing/style.css»

Источник: https://www.imbf.org/vebmaster/htaccess-primery-redirektov.html

Htaccess: добавить/удалить слэш из URL

Мой сайт работает скрипт -> WSS обои сценарий

Моя проблема -> Я пытался заставить удалить или добавить слэш в конце моего URL для предотвращения дублирования контента, а также для очистки моих URL-адресов.

Я пробовал все виды и пробовал все, что мог придумать, и загружать из межсетевых экранов, но пока такого не было! Это может быть быстрым решением, но я так сильно смотрю на него, что, вероятно, слеплю что-то мертвое.

Так я представляю вам все свои .htaccess кода:

DirectoryIndex index.php RewriteEngine on RewriteRule ^download/([0-9]+)?/([0-9]+)x([0-9]+)/([^/.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4&download=1 [L] RewriteRule ^file/([0-9]+)?/([0-9]+)x([0-9]+)/([^/.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4 [L] RewriteRule ^preview/([0-9]+)?/([0-9]+)x([0-9]+)/([^/.]+) wallpaper_preview.php?id=$1&width=$2&height=$3&name=$4 [L] RewriteRule ^thumbnail/([0-9]+)?/([0-9]+)x([0-9]+)/([^/.]+)/([^/.]+)/([^/.]+)/([^/]+) image.php?wallpaper_id=$1&width=$2&height=$3&cropratio=$4&align=$5&valign=$6&file=$7 [L] RewriteRule ^cat/([0-9]+)?/([^/.]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&page=$3 [L] RewriteRule ^cat/([0-9]+)?/([^/.]+)/([0-9a-zA-Z?-]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&sortby=$3&page=$4 [L] RewriteRule ^cat/([0-9]+)?/([^/.]+)/([0-9a-zA-Z?-]+)-([0-9]+) index.php?task=category&id=$1&sortby=$3&page=$4 [L] RewriteRule ^cat/([0-9]+)?/([^/.]+) index.php?task=category&id=$1&name=$2 [L] RewriteRule ^tag/([^/.]+)/([0-9a-zA-Z?-]+)/([0-9]+) index.php?task=tag&t=$1&sortby=$2&page=$3 [L] RewriteRule ^tag/([^/.]+) index.php?task=tag&t=$1 [L] RewriteRule ^profile/([0-9]+)?/([^/.]+) index.php?task=profile&id=$1&name=$2 [L] RewriteRule ^profile/comments/([0-9]+)?/([^/.]+) index.php?task=users_comments&id=$1&name=$2 [L] RewriteRule ^page/([0-9]+) index.php?task=view_page&id=$1 [L] RewriteRule ^register index.php?task=register [L] RewriteRule ^lost-password index.php?task=lost_pass [L] RewriteRule ^links index.php?task=links [L] RewriteRule ^news/item/([0-9]+)/([^/.]+) index.php?task=news&id=$1 [L] RewriteRule ^news/page([0-9]+) index.php?task=news&page=$1 [L] RewriteRule ^members/([^/.]+)-([^/.]+)/page([0-9]+)? index.php?task=member_list&sort=$1&order=$2&page=$3 [L] RewriteRule ^members index.php?task=member_list [L] RewriteRule ^messages index.php?task=messages [L] RewriteRule ^submit index.php?task=submit [L] RewriteRule ^search/([^/.]+) index.php?task=search&q=$1 [L] RewriteRule ^search index.php?task=search [L] RewriteRule ^submit index.php?task=submit [L] RewriteRule ^r-([0-9]+)?-([0-9]+)? go.php?id=$1&ref=$2 [L] RewriteRule ^r-([0-9]+)? go.php?id=$1 [L] RewriteRule ^([^/.]+)/([0-9]+)/([^/.]+) index.php?task=view&id=$2&name=$3 [L] RewriteRule ^news/([^/.]+) index.php?task=news&name=$1 [L] RewriteRule ^profile/([^/.]+) index.php?task=profile&name=$1 [L] RewriteRule ^news index.php?task=news [L] RewriteRule ^page/([^/.]+) index.php?task=view_page&name=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/.]+)/([0-9a-zA-Z'?-]+)/([0-9]+) index.php?task=category&name=$1&sortby=$2&page=$3 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/.]+)/([^/.]+) index.php?task=view&name=$2 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/.]+) index.php?task=category&name=$1 [L] ## www reslove ## RewriteCond %{HTTP_HOST} !^www. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ## www reslove ## ## index reslove ## Options +FollowSymLinks RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://www.epicwallpaper.net/$1 [R=301,L] ## index reslove ##

php apache .htaccess mod-rewrite108k<\p>

Источник: https://stackoverrun.com/ru/q/5851985

301 редирект

Редирект — это способ перенаправить пользователей и поисковых систем на другой URL отличный от того, который они первоначально запросили. Ниже приведены описания некоторых из наиболее часто используемых видов перенаправления.

301 Moved Permanently

301 редирект является постоянным редиректом, который передает около 90-99% ссылочного веса. Данный редирект указывает, что страница перемещена по новому адресу и старый url следует считать устаревшим.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

302 редирект – временный редирект. Данный редирект передает 0% от ссылочного веса и, в большинстве случаев, не должен использоваться. На данный момент интернет работает по протоколу HTTP, который и определяет, как обрабатывать URL-адреса. В двух версиях этого протокола этот ответ сервера имеет разный статус ответа:

— HTTP 1.0: 302 ответ сервера это «Moved Temporarily » – текущий документ временно перемещен на другой URL.

— HTTP 1.1: произошло изменение ответа сервера на «Found» – текущий документ найден.

307 Moved Temporarily (HTTP 1.1 Only)

307 редирект в протоколе HTTP 1.1 стал приемником 302 редиректа. В то время, как основные поисковые боты, начнут рассматривать его как аналог 302, для почти всех случаев лучше всего использовать 301.

Исключением из этого правила является, когда контент действительно переехал только временно (например, во время технического обслуживания) и поисковые системы уже понимают, что ваш сервер совместим с HTTP 1.1.

Но, так как это практически невозможно определить, действительно ли поисковые системы поняли, что ваш сервер совместим с этим новым протоколом, то лучше использовать 302 редирект для контента, который был временно перемещен.

Другие виды редиректов

Совет

Существуют также и другие виды редиректов: Meta Refresh или с помощью JavaScript – которые выполняются на уровне страницы, а не на уровне сервера. Вот как выглядит типичный редирект Meta Refresh:

Но, данные редиректы желательно использовать крайне редко, так как ими очень любят злоупотреблять спамеры и дорвейщики. Кроме этого, при использовании этих редиректов ссылочный вес почти не передается.
Примеры использования

Канонизация домена сайта или как склеить домен?

Чтобы склеить домен с www на без www:

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC] RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Для склейки с без www на с www:

RewriteCond %{HTTP_HOST} ^site.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Для того чтобы правильно выбрать на какой из вариантов склеивать, желательно посмотреть:

— как из этих вариантов больше находиться в топе
— для какого из вариантов больше страниц в индексе

Канонизация слеша в конце урла

При проектирование сайта важно определиться с одним форматом использование слеша в конце урла, так как для поисковых систем 2 урла вида:

— http://www.site.com/cat1/

— http://www.site.com/cat1

являются разными. Поэтому, после того как вы определились, как именно у вас будет на сайте, дальше необходимо прописать следующие редиректы

Для того чтобы удалить слэш в конце:

RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]

Для того чтобы добавить слэш в конец адресной строки:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Редирект одной страницы на другую страницу:

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Редирект для дублей главной страницы

Этот код гарантирует, что любой адрес домашней страницы, который включает несколько версий прямых ссылок имени страницы, например, default.htm или index.html, будет перенаправлен на каноническую главную страницу, http://www.site.com:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/]+/)*(default|index|main).(html|php|htm) HTTP/ [NC] RewriteRule ^(([^/]+/)*)(default|main|index).(html|php|htm)$ http://www.site.com/$1 [L,R=301]

Редирект каталога

Если структура каталога у вас отображается в url-ле, то если вы делаете перекаталогизацию у вас соответственно будут изменяться и url. В таком случае необходимо прописать следующий редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

Но, если урл старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом

RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]

Редирект при смене расширение файлов

Если вы вдруг переехали на другую платформу или CMS и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект

RedirectMatch 301 (.*).php$ http://www.site.com$1.html

Примеры использования для защиты сайта от множественных дублей страниц

Редирект с разных доменов и субдоменов

Если вы купили несколько доменов в разных доменных зонах или разрабатывали новый сайт и повесили его на субдомен, а этот субдомен забыли закрыть от индексации, то необходимо сделать редирект на основной домен:

RewriteCond %{HTTP_HOST} !^www.site.com RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Таким, образом все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

Как удалить несколько слешей/тире в урле

Иногда «по случайности» в урле могут появится по несколько слешей, например, www.site.com/catalog////page-1.html. В таких необходимо делать 301 редирект на страницу с одним слешер www.site.com/catalog/page-1.html :

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]

Аналогично, можно склеить в урле несколько дефисов в один: с www.site.com/catalog/page—1.html на www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)—(.*)$ RewriteRule . %1-%2 [R=301,L]

Как сделать редирект с любого урла на url только в нижнем регистре

Поскольку, поисковыми системами регистр букв учитывается, то при проектировании сайта желательно, чтобы все урлы были в нижнем регистре. Однако, если вы изначально упустили данный момент, то лучше всего воспользоваться следующим кодом для редиректа на уровне php-скрипта:

$lowerURI=strtolower($_SERVER['REQUEST_URI']); if($_SERVER['REQUEST_URI']!=$lowerURI) { header(«HTTP/1.1 301 Moved Permanently»); header(«Location: http://» . $_SERVER['HTTP_HOST'] . $lowerURI); exit(); }

Как переехать на новый домен? Оптимальная стратегия 301 редиректа

Источник: http://site364.ru/blog/301_redirekt/

Ссылка на основную публикацию