Htaccess редирект с www и без www (301). Редирект с без www на www joomla


Редирект 301: с WWW на без WWW и наоборот

class="eliadunit">

Есть мнение, и оно не безосновательно, что каждый сайт должен иметь 301 редирект, который был бы настроен так, чтобы один из сайтов, с или без www, был главным (например, для моего сайта, главным является joomla-school.com, и при заходе по адресу www.joomla-school.com, вас автоматически перебросит на joomla-school.com). Для чего это нужно, спросите вы? Об этом я постараюсь рассказать в этом посте, но начать, пожалуй, стоит с истории зарождении самой проблемы, связанной с использованием или не использованием приставки WWW в названии сайта.

Откуда появилась приставка WWW и что в этом плохого для начинающего вебмастера

Примерно десять лет назад World Wide Web (Всемирная паутина - то, что мы сейчас и считаем, собственно, интернетом) была лишь малой частью интернета, а сервера были очень слабенькими, поэтому приходилось размещать, например, сервер Apache на одном компьютере, почтовый сервер на другом, а сервер FTP на третьем. Имена серверов начинались с названия машин, на которых они располагались, и в зависимости от предоставляемого сервиса, выглядели так: www.domain.com, mail.domain.com, и ftp.domain.com (а так же совсем раритет - gopher.domain.com).

В настоящее же время приставка www является анахронизмом и должна была бы благополучно отмереть, однако, до сих пор существует масса каталогов, которые автоматически прибавляют к имени сайта вида domain.com пресловутое www. Так же существует немало пользователей, которые автоматически набирают в браузерах адрес сайта с www в начале (все же знают песню группы Ленинград). Поэтому www остается и создает очень интересную ситуацию. Получается, что www.domain.com и domain.com технически считаются полностью различными объектами, причем www.domain.com является родственным домену третьего уровня вида sub.domain.com. Но при этом же, обычно, www.domain.com и domain.com ведут (или должны вести) на одну и туже страницу (в отличии от субдомена sub.domain.com), т.е. получается, что каждый только псевдоним для другого (алиас или же по-английски alias).

Конечно же, можно все это пропустить и не забивать голову, но если вы всерьез заботитесь о продвижении вашего сайта в поисковых системах, то это может быть серьезной помехой у вас на пути. Смотрите сами что получается. Многие поисковики воспримут domain.com и www.domain.com как разные сайты, со всеми вытекающими отсюда последствиями. А именно - все внешние ссылки на ваш сайт будут делится на две части, в зависимости от того, в каком виде на вас проставили ссылку (с www или же без него). Получается, что вы лишаетесь части внешних ссылок на ваш сайт, а это, соответственно, приводит к понижению сайта в рейтинге поисковиков, и пользователей с них к вам будет приходить меньше, чем могло бы. Кроме этого еще нужно учитывать то что серьезные поисковики (Google, например) борются за уникальный контент и не индексируют страницы (и даже сайты целиком) двойники, что чревато для нашей ситуации. Поясню.

Допустим, что домен domain.com стал популярным и на него много ссылаются, но, как на зло, при начальной индексации сайта поисковик нашел первым домен www.domain.com и теперь получается, что domain.com стал двойником (не имеет уникального содержания) и с большой долей вероятности он выпадает из рейтинга. Печально, не правда ли? Теперь поговорим о том, как этого избежать. Кто-то очень умный придумал способ как переадресовать один псевдоним к другому, который по существу является переадресацией к самому себе. Способ это называется Редирект и существует несколько вариантов его реализации на разных серверах. Я приведу здесь два самых простых на мой взгляд способа: первый - универсальный, с использование файла .htaccess. Он подходит для всех сайтов, и другой - с использованием специального плагина для редиректа - подходит для сайтов, созданных на Joomla.

Способ с использованием файла .htaccess

Заходим в корневой каталог сайта, открываем для редактирования файл .htaccess, ищем в нем строчку:

а также

Если они закомментированы (спереди стоит значок #), то разкомментируйте их. А потом сразу после RewriteEngine On добавьте вот такие строчки:

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

где site.ru - имя вашего домена

Не забывайте про обратную наклонную черту перед точкой (.) в строке RewriteCond - она обязательна. Вы можете так же ознакомиться и с другими вариантами 301 редиректа на этой странице. При 301 редиректе Google должен объединять PR сайтов. Теперь, кстати, ваш сайт будет доступен и по доменному с www, так и без www, но в адресной строке вас будет перебрасывать на то имя, на которое вы настроили редирект. Этот способ называется "перенаправление с шаблоном". В результате получается следующее: если набрать в адресной строке, например, http://www.joomla-school.com/uroki.html, то пользователь будет автоматически перемещен на ту же страницу, только без www – http://joomla-school.com/uroki.html.

Важно: добавляйте строчки сразу после RewriteEngine On. У меня, например, переадресация отказывалась работать, если между ними была пустая строка.

У меня данный код выглядит вот так:

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.joomla-school\.com$ [NC] RewriteRule ^(.*)$ http://joomla-school.com/$1 [R=301,L]

То есть,  у меня все ссылки с приставкой www перенаправляются на ссылки без www.

Если же вы хотите, чтобы перенаправление действовало в обратном направлении ( с без www в ссылки с www, то добавьте вот такой код:

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

где site.ru - имя вашего домена

Способ с использованием плагина www Redirect

Если у вас по каким-либо причинам не удается воспользоваться первым способом, тогда вы можете применить плагин www Redirect, который создан именно для этого. Итак, скачиваем данный плагин с сайта разработчика (также данный плагин я разместил во вложениях к данной статье). После установки в систему, заходим в его параметры и выбираем направление редиректа:

После выбора направления, не забываем опубликовать данный плагин. Вот и все. Теперь перенаправление должно работать на вашем сайте!

Директива Host, позволяющая задать главное зеркало сайта для Яндекса

Для Яндекса дополнительно надо определить какое зеркало сайта является главным, с помощью директивы 'Host' в файле robots.txt. Он так же, как и файл .htaccess находится в коневом каталоге вашего сайта. Код добавляемый в robots.txt должен выглядеть следующим образом:

User-agent: Yandex Disallow: Host: joomla-school.com

Лучше будет вынести директиву 'Host' в отдельную секцию, предназначенную только для робота Яндекса (User-agent: Yandex), т.к. возможно, что другие поисковики (Google, например) могут некорректно отработать непонятную им директиву. Так же по стандартам файла robots.txt в каждой секции 'User-agent' должна присутствовать хотя бы одна директива 'Disallow', поэтому мы и поставили в коде пустую, ничего не запрещающую директиву Disallow:. Мой файл robots.txt, после добавления приведенного выше кода, стал выглядеть так:

User-agent: * Disallow: User-agent: Yandex Disallow: Host: joomla-school.com

В статье использованы материалы сайта ktonanovenkogo.ru

class="eliadunit">

joomla-school.com

Joomla и .htaccess - полезности — База знаний Joomla

Всё описанное добавляется в .htaccess и как правило требует модуля Apache - mod_rewrite.

Создание короткого адреса карты сайта Xmap

Код позволяет создать адрес вида sitemap.xml и в таком виде добавлять его сервисы вебмастера поисковиков

RewriteCond %{REQUEST_URI} ^/sitemap.xml RewriteRule .* /index.php?option=com_xmap&id=1&view=xml&format=html [L]  

На сайте самого Xmap говорится о другом варианте

RewriteCond %{REQUEST_URI} ^/sitemap.xml RewriteRule .* /index.php?option=com_xmap&id=1&view=xml

но он часто вызывает 500 ошибку сервера

Редирект URL с www на URL без- www

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

Редирект URL без-www на URL с www

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

Редирект страниц одного домена на другой

RewriteCond %{HTTP_HOST} ^(www\.)?joomla-docs\.ru RewriteRule ^(.*)$ http://joomla-support.ru/$1 [R=301,L]

Конструкция перенаправляет все страницы одного домена на другой домен.

Редирект со страниц без суффикса .html на страницы с .html

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

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

Удаление дубля главной страницы - index.php из URL

Последние версии SEF-компонентов (sh504SEF и MijoSEF) не делают автоматических редиректов с _http://joomla-docs.ru/index.php на корень сайта _http://joomla-docs.ru/, поэтому добавляем код

RewriteCond %{THE_REQUEST} !^POST RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$ RewriteRule ^index\.php$ http%2://joomla-docs.ru/ [R=301,L]

joomla-docs.ru естественно меняем на свой домен

Все другие конструкции могу приводить к проблемам с POST-запросами напрямую через файл index.php (вместо выполнения получим редирект на корень сайта). Поэтому для редиректа обязательно исключение запросов POST.

Запрет листинга каталогов

Стандартно, при прямом доступе к каталогу с отсутствующим пустым файлом index.html (index.htm), открывается список содержимого каталога. Следующие директивы помогают избежать этого.

IndexIgnore * Options -Indexes

www.joomla-docs.ru

Настройка SEO-корректных редиректов через .htaccess

 

Советы

  1. Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
  2. Избегайте двух, трех и т.д. последовательных редиректов. Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
  3. Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте — http://www.bertal.ru

Правила переадресаций

1. 301 редирект с одной страницы на другую

Самый простой вариант

Более подробный

2. 301 редирект с www на без www (главное зеркало – домен без www)

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

3. 301 редирект с без www на www (главное зеркало – домен с www)

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

4. 301 редирект со страниц со слешем на без слеша (весь сайт)

1 2 3 4 5 6 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]

5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

1 2 3 4 5 6 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

6. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]

7. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

8. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]

9. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]

10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

1 2 3 RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

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

12. 301 редирект для index.php в Joomla (массовая склейка)

1 2 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://polbel.biz/$1 [R=301,L]

13. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

1 2 RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

2 вариант (со страницы и GET параметром)

1 2 3 RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

14. Все страницы одного домена на главную страницу другого домена

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

15. Каждая страница одного домена на такой же адрес другого url

16. Редирект с протокола http на https.

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

17. Редирект с протокола https на http.

Обратный редирект, если перестали использовать SSL сертификат.

 

 

nsys.by

Htaccess редирект с www и без www (301)

  1. SEO Блог
  2. Создание сайта
2011-08-23 переадресация домена

Для поисковых систем домен с www и домен без www - это два разных ресурса и для того, чтобы они правильно его воспринимали, индексировали и ранжировали как единое и уникальное целое нужен 301 редирект ("перенесен навсегда") с одного домена на другой.Самый простой вариант редиректа - при помощи файла .htaccess, который находится в корне сайта, для его осуществления необходим включенный модуль mod_rewrite. А в случае если этот моду выключен или у вас нет доступа к файлу htaccess, вы можете использовать редирект на PHP.

301 редирект с www

Существует несколько правильных вариантов 301 редиректа в htaccess, и какой из них вы выберете не имеет никакого значения.Первый самый простой и понятный вариант редиректа с www:

<IfModule mod_rewrite.c>Options +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]</IfModule>

Второй вариант редиректа с www:

<IfModule mod_rewrite.c>Options +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]</IfModule>

Третий с условием от противного вариант редиректа с www:

<IfModule mod_rewrite.c>Options +FollowSymLinksRewriteEngine OnRewriteCond %{HTTP_HOST} !^site\.ru$ [NC]RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]</IfModule>

301 редирект на www

Как и в редиректе с www, для редиректа на www есть несколько правильных способов, выбирайте который по душе.Первый вариант редиректа на www:

<IfModule mod_rewrite.c>Options +FollowSymLinksRewriteEngine OnRewriteCond %{HTTP_HOST} ^site.ru$ [NC]RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]</IfModule>

Второй вариант вариант редиректа на www с условием от противного:

<IfModule mod_rewrite.c>Options +FollowSymLinksRewriteEngine OnRewriteCond %{HTTP_HOST} !^www\.(.*) [NC]RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]</IfModule>

Для редиректов отдельных страниц, файлов и даже бана пользователей при помощи htaccess вы можете воспользоваться генератором редиректов.

Важно!

Не забываем, поставив редирект с одного домена на другой, выбрать свой предпочтительный домен в аккаунте Google, а для Яндекса прописать в файле robots.txt директиву: "Host: site.ru".

После переиндексации сайта желательно зайти в панель управления сайтом Яндекс Вебмастер и Google веб мастер и проверить правильно ли проиндексировались страницы, нету ли каких-либо ошибок или недоступных страниц, и только если все в порядке можно спать спокойно - пере адресация настроена правильно и без ошибок.

Комментарии к статье

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

seodiz.ru

Как правильно настроить 301 редирект с адресов с www на адреса без www в .htaccess в joomla 1.5?

Проблема заключается в том, что когда я прописываю стандартные варианты редиректа, вроде

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

или

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

или

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

Редирект происходит, но при этом возвращает на главную страницу, а не на ту же, где произошёл редирект. Как это можно исправить?

Файл htaccess'а выглядит так:

## # @version $Id: htaccess.txt 21064 2011-04-03 22:12:19Z dextercowley $ # @package Joomla # @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. # @license http://www.gnu.org/copyleft/gpl.html GNU/GPL # Joomla! is Free Software ## ##################################################### # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE # # The line just below this section: 'Options +FollowSymLinks' may cause problems # with some server configurations. It is required for use of mod_rewrite, but may already # be set by your server administrator in a way that dissallows changing it in # your .htaccess file. If using it causes your server to error out, comment it out (add # to # beginning of line), reload your site in your browser and test your sef url's. If they work, # it has been set by your server administrator and you do not need it set here. # ##################################################### ## Can be commented out if causes errors, see notes above. Options +FollowSymLinks # # mod_rewrite in use RewriteEngine On ########## Begin - Rewrite rules to block out some common exploits ## If you experience problems on your site block out the operations listed below ## This attempts to block the most common type of exploit `attempts` to Joomla! # ## Deny access to extension xml files (uncomment out to activate) #<Files ~ "\.xml$"> #Order allow,deny #Deny from all #Satisfy all #</Files> ## End of deny access to extension xml files # Block out any script trying to set a mosConfig value through the URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] # Block out any script trying to base64_encode data within the URL RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR] # Block out any script that includes a <script> tag in URL RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] # Block out any script trying to modify a _REQUEST variable via URL RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) # Return 403 Forbidden header and show the content of the root homepage RewriteRule .* index.php [F] # ########## End - Rewrite rules to block out some common exploits ########## Begin - Custom redirects # # If you need to redirect some pages, or set a canonical non-www to # www redirect (or vice versa), place that code here. Ensure those # redirects use the correct RewriteRule syntax and the [R=301,L] flags. # ########## End - Custom redirects # Uncomment following line if your webserver's URL # is not directly related to physical file paths. # Update Your Joomla! Directory (just / for root) # RewriteBase / ########## Begin - Joomla! core SEF Section # RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # # If the requested path and file is not /index.php and the request # has not already been internally rewritten to the index.php script RewriteCond %{REQUEST_URI} !^/index\.php # and the request is for root, or for an extensionless URL, or the # requested URL ends with one of the listed extensions RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC] # and the requested path and file doesn't directly match a physical file RewriteCond %{REQUEST_FILENAME} !-f # and the requested path and file doesn't directly match a physical folder RewriteCond %{REQUEST_FILENAME} !-d # internally rewrite the request to the index.php script RewriteRule .* index.php [L] # ########## End - Joomla! core SEF Section RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] ########## RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://www.klimat-garant.ru/ [R=301,L] ##########

toster.ru

301 редирект через .htaccess joomla 3

Три важных совета и четырнадцать конкретных примеров установки 301 переадресации страниц

через htaccess! для сайтов на нашей любимой joomla 3

Советы

Правила переадресаций

1. 301 редирект с одной страницы на другую

Самый простой вариант

1 Redirect 301 /test-1/ http://site.ru/test-2/

Более подробный

1 2 RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

2. 301 редирект с www на без www (главное зеркало – домен без www)

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

3. 301 редирект с без www на www (главное зеркало – домен с www)

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

4. 301 редирект со страниц со слешем на без слеша (весь сайт)

1 2 3 4 5 6 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]

5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

1 2 3 4 5 6 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

6. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]

7. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

8. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]

9. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]   RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]

10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

1 2 3 RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

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

12. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

1 2 RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

2 вариант (со страницы и GET параметром)

1 2 3 RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

13. Все страницы одного домена на главную страницу другого домена

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

14. Каждая страница одного домена на такой же адрес другого url

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

14. Редирект с протокола http на https.

1 2 RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Обратный редирект. Исключаем использование защищенного протокола не отключая его физически на хостинге.

15. Редирект с протокола https на http.

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

www.newsm.com.ua

301 редирект с помощью .htaccess

17 примеров реализации 301 редиректа.

.htaccess - 301 редирект

1. 301 редирект с одной страницы на другую

Самый простой вариант

Redirect 301 /page-1/ http://site.ru/tpage-2/

Более подробный

RewriteCond %{REQUEST_URI} ^/page/$ RewriteRule ^.*$ http://site.ru/new-page/? [R=301,L]

2. 301 редирект с www на без www

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

3. 301 редирект с без www на www

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

4. 301 редирект со страниц со слешем на без слеша

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

5. 301 редирект со страниц без слеша на слеш

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

6. Один 301 редирект на без www и с слешем на конце адреса страницы

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

7. Один 301 редирект на c www и со слешем на конце адреса страницы

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

8. Один 301 редирект на c www и без слеша на конце адреса страницы

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

9. Один 301 редирект на без www и без слеша на конце адреса страницы

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

10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: site.ru/index.php?n=1 на site.ru/?n=1

RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

12. 301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка

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

13. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /page/? [R=301,L]

2 вариант (со страницы и GET параметром)

RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /page/? [R=301,L]

14. Все страницы одного домена на главную страницу другого домена

RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

15. Каждая страница одного домена на такой же адрес другого url

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

16. Редирект с протокола http на https

RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

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

RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

17. Редирект с протокола https на http

Обратный редирект, если перестали использовать SSL сертификат.

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

Original: web-optimizator.com

renotes.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта