Настройки htaccess Joomla

301 редирект для Joomla на .htaccess

Опубликовано: 25.01.2015 08:33
Просмотров: 39511

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

Файл .htaccess - барьер между линкопомойкой и дублями

Наверняка многие из вас видели страницу с ошибкой 404 "Страница не найдена" либо что-то похожее. В CMS Joomla уже есть несколько способов редиректа (т.е. перенаправления) с одной страницы на другую, но они не всегда работают. Да и вообще труднопонимаемы для простого пользователя. Для этого на помощь приходит 301 редирект, который осуществляет "склейку" страниц, дабы не растить огромное количество дублей. Давайте же составим универсальный способ перенаправлений для всех страниц вашего сайта.

Первоначально в каталоге сайта нужно найти файлик htaccess.txt и переименовать его в .htaccess Именно так, и никак иначе! Затем в настройках админ панели требуется поставить галки, что я указал на рисунке ниже.

Настройки seo в Joomla

Далее заходим в файлик .htaccess и начинаем продумывать правила для дальнейших перенаправлений.

1. Убираем дублирование страницы site.ru/index.php на site.ru

1
Redirect 301 /index.php http://site.ru/

Либо прописываем такой код

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

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

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

3. Убираем www в заголовке вашего сайта

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

4. Перенаправляем страницу без суффикса .html на её аналог с суффиксом, т.е. site.ru/report на site.ru/report.html. Данный способ полезен для seo-оптимизации, бородатые дядьки так говорят. Я слушаю их советы)

1
2
3
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

5. Редиректим пользователя со страницы с GET-параметрами (параметры в адресной строке, вида ?option=1&view-true) на чистую страницу

1
2
RewriteCond %{QUERY_STRING} ^limitstart=0
RewriteRule ^image http://site.ru/image? [R=301,L]

6. Вариант редиректа при смене структуры сайта. Что-то похожее на это: site.ru/blog/raznoe/article - site.ru/blog/article

1
RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

7. Приписываем всем введённым url слеш в конце, дабы уменьшить кол-во дублей (да да, и такое бывает)

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

А сейчас несколько моих отдельных изысков.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#Сжимаем компоненты сайта путем включения Gzip
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/j-avascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
 
#Защищаем сайт
#Включаем отслеживание сим-ссылок
Options +FollowSymLinks
#Блокируем все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокируем все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокируем все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправляем все подобные на страницу с ошибкой 403 - запрещено
RewriteRule ^(.*)$ index.php [F,L]

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

На этом пока что всё. Я описал не всё, но самое важное на мой взгляд. Кстати, недавно вышла интересная статья 10 главных отличий Joomla 3.0 от 2.5. Читайте наш блог, подписывайтесь на рассылку, и всем удачного дня! До встречи!

  • Гость - myhelpers

    301 редирект для мультиязычного сайта на Joomla 3 c 303 редиректом

    Здравствуйте, уважаемые!

    Прошу помочь решить следующую насущную для мультиязычного сайта на Joomla 3 и, думаю, многих других CMS, проблему:
    При создании нескольких языковых версий сайта средствами мультиязычности самой CMS получается следующее:
    http://domain.ru -с русским языком
    http://domain.ru/ru/-русская версия сайта(является основным языком сайта)
    http://domain.ru/en/-английская версия сайта
    http://domain.ru/de/-немецкая версия сайта
    и если средствами Joomla 3 удалять префикс /ru/ из адресной строки, то срабатывает 303 редирект, что есть нехорошо, т.к. для SEO нужен 301 редирект.
    Если же не убирать префикс в настройках Joomla 3, то будет существовать domain.ru/ru/" rel="nofollow">domain.ru/ru/ и domain.ru с русским языком, т.е. дубли.
    Как посредством .htaccess убрать префикс /ru/, т.е. сделать 301 редирект с domain.ru/ru/" rel="nofollow">domain.ru/ru/ -> domain.ru и чтобы в последующем переключение языков на сайте было корректным.

    В течение 2-x недель поиска информации в интернете опробовал разные куски кода в htaccess, но рабочего варианта так и не нашел.
    Распишите, пожалуйста, подробно как решить эту проблему, т.к. с этим вопросом не могут справится куча народа, как в русскоязычном сегменте интернета, так и зарубежом, либо опишите другие возможные варианты решения. Если вам несложно, то вышлите мне решение на почту myhelpers@mail.ru , чтобы быстрее смог его реализовать.
    Если для кого-то это тривиально, то простите за незнание! :-)

  • Гость - Конатнатин

    Я люблю тебя)

  • Ой, ну я прям засмущался))) Очень рад, что приношу счастье людям :P

  • Гость - Виталий

    Хрень, ничего не понятно. Мне все это прописывать незная что это, и зачем? Нормально нельзя объяснить? Лишь бы что-нибудь написать, для веса сайта. Начать можно с того что после включения в админ панели перенаправления url меня перекидывает на сайт хостинга, и сайт не работает. Пойду искать другой сайт.

  • Виталий, я же написал комментарии для каждой строки. И у меня всё прекрасно работает (этот сайт на таком же .htaccess).
    Под каждый сайт нужно настраивать индивидуально файлик. Методом проб и ошибок всё познаётся, поверьте мне.

  • Подскажите почему этот код
    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
    RewriteRule .* %1.html [R=301,L]
    RewriteRule ^(.*)/$ /$1.html [R=301,L]
    он то нужен, но почему то отключает на сайте отправку комментариев, не подскажете как исправить? Есть ли решение и где копать

  • Зравствуйте. Сделала все как вы описали, но почему то редирект не происходит.

    из Sergiev Posad, Moscow Oblast, Russia
  • Гость - Lalla78

    Не совсем понимаю что мне вообще делать.

    Яндекс индексировал после установки 3 джумлы 2000 страниц. В индексе 177.
    КАк удалить дубли, если Яша жует только дубли, убираю из поиска, а редирект не получается.

    Мне надо убрать все, что имеет в ссылках index, component и т.п.
    Можно ли написать так?

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

    Redirect 301 /index.php?option=com_content&view=article&id=213:kak-svyazat-dlya-nachinayushchikh-samoe-legkoe&catid=93&Itemid=187 http://****.ru/rukodelie-podelki/vyazanie-kryuchkom/igrushki-kryuchkom-dlya-nachinayushchikh-foto-video-skhemy-opisaniya/213-kak-svyazat-dlya-nachinayushchikh-samoe-legkoe.html

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


    Почему-то вариант с 301 редиректом где я меняю ссылку на ссылку у меня не сработал.

  • Скажите пожалуйста куда на прописать эти коды
    #Сжимаем компоненты сайта путем включения Gzip
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/j-avascript text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html

    #Защищаем сайт
    #Включаем отслеживание сим-ссылок
    Options +FollowSymLinks
    #Блокируем все ссылки, содержащие <s-cript>
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    #Блокируем все скрипты, которые пытаются изменить переменные PHP Globals:
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    #Блокируем все скрипты, которые пытаются изменить переменную _REQUEST:
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    #Перенаправляем все подобные на страницу с ошибкой 403 - запрещено
    RewriteRule ^(.*)$ index.php [F,L]

Оставьте свой комментарий

Оставить комментарий от имени гостя

0 / 2000 Ограничение символов
Ваш текст должен быть в пределах 10-2000 символов
Ваш комментарий будет отправлен на модерацию