Как сделать редирект для Joomla. Редирект 404 на главную joomla


Ошибка 404 в ответе url на htaccess

Сегодня хочу поднять тему создания 404 ошибки средствами apache через файл .htaccess . Я уже расказывал вам о том, как можно создать ошибку 404 на php, а так же о том как сделать 301 редирект на htacces, - пришло время рассказать о htaccess 404 ошибка. В этом уроке попробуем сделать htaccess 404 redirect таким образом, чтоб ошибка 404 была видна сразу, без 301 и 302 редиректа и без использования PHP, чтоб не нагружать его.

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

Редирект 404 на htaccess

Это не опечатка, действительно ошибка 404 создается аналогично 301 редиректу в .htaccess но с некой оговоркой.

Предположим, что у нас на сайте есть ненужные ссылки с GET параметрами, например ваш_сайт/?more=1 и мы хотим запретить их показывать отдав ошибку 404 в ответ.

Нажмите, чтобы посмотреть код

RewriteCond %{QUERY_STRING} ^.*more=1.*RewriteRule . - [R=404,L,NC]

Забрасываем этот код в файл htaccess в корне вашего сайта WordPress и смотрим результат:

htaccess перенаправление на 404Вот так вот, браузер получает ошибку 404 через redirect. Аналогичное сообщение получит и поисковый бот и через время выбросит этот url из своего кеша.

Если вам нужно заблокировать какую нибудь страницу WordPRess, например ваш_сайт/privet-mir/, можно написать код вот такого плана:

RewriteCond %{REQUEST_URI} ^/privet-mir.*RewriteRule . - [R=404,L,NC]

Результат работы предсказуемый:

404 редирект htaccess

 

Я тестировал этот результат только на CMS WordPress, если у вас не получается использовать 404 редирект htaccess на другой системе управления не стоить расстраиваться, по всей видимости код для них может быть похожий. Как альтернатива попробуйте вот такой код:

RewriteCond %{REQUEST_URI} ^/indent/.*RewriteRule ^(.*)$ [R=404]

Он не работает на вордпресс, но работает на сайтах без системы управления контентом.

Ошибка 404 htaccess

Если вы внимательно тестировали результат работы, то наверное заметили вот эту дурацкую ошибку:

htaccess 404 ошибка

Получается вместо стандартной страницы ошибки 404 в WordPress - мы видив вот это не пойми что. Ситуацию нужно исправлять, ведь любой заказчик нас заплюет слюной за вот такие htaccess 404 redirect 🙂 . И что самое главное тут он абсолютно прав, любой пользователь увидев такое чудо развернется и убежит очень и очень далеко.

Как указать страницу ошибки 404 на htaccess

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

ErrorDocument 404  http://vash_sayt/404/

Полный код будет выглядеть приблизительно вот так тогда:

Развернуть код ниже

ErrorDocument 404  http://vash_sayt/404/RewriteCond %{REQUEST_URI} ^/privet-mir.*RewriteRule . - [R=404,L,NC]

И тут как говорится за что боролись, на то и напоролись:

htaccess 404 redirectПеред ошибкой 404 мы получаем ошибку 302 и это как говорят СЕО шники очень плохо. В общем если ваш заказчик не СЕО специалист этот вариант прокатит, в альтернативном варианте надо использовать PHP для генерации ответа. Об этом я писал вот здесь: 404 c php

Если мне удастся решить проблему с htaccess 404 redirect 302 я обязательно напишу вам об этом в этой же теме. На данный момент решение проблемы не найдено. Решение есть, описал его ниже.

Аналогично можно было не придумывать каруселей и сделать 404 редирект на htaccess через 301 редирект, разницы по сути никакой, только проще и быстрее:

RewriteCond %{REQUEST_URI} ^/privet-mir.*RewriteRule ^(.*)$ http://%{HTTP_HOST}/404/? [R=301,L]

По сути задача сделать саму ошибку 404 превратилась в банальное перенаправление на 404. Будем искать варианты.

Решение проблемы 302 перенаправления при ответе 404

Возможно мой код покажется вам громоздким, но единственный способ, который я смог придумать для того, что удалить 302 редирект перед ошибкой 404 - и выглядит это дело вот так:

ErrorDocument 404 /error.htmlRewriteCond %{REQUEST_URI} ^/privet-mir.*RewriteRule . - [R=404,L,NC]

В корне сайта создаем файл "error.html" и туда забрасываем хтмл код, который генерирует ваш сервер WordPress. Вот результаты работы:

htaccess-404-not-302и вот же правильная страница ошибки без редиректа 302:

htaccess-echo-404

Как вы поняли, проблему мы смогли решить благодаря тому, что не использовали полный путь к файлу в этой директиве ErrorDocument 404 /error.html 🙂 

Теоретически на этом все. Теперь вы знаете как делается ошибка 404 на htaccess.

Если вы имеете другие решения htaccess 404 redirect или перенаправление на 404 без редиректа 301 и 302 буду рад вас выслушать. Обращайтесь, пишите комментарии, жмите лайк.

help-wp.ru

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

Опубликовано: 25.01.2015 08:33

Просмотров: 14265

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

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

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

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

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

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

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

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

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

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

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

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

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

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-оптимизации, бородатые дядьки так говорят. Я слушаю их советы)

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

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

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

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

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

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

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. Читайте наш блог, подписывайтесь на рассылку, и всем удачного дня! До встречи!

Если статья была для Вас полезной - Поделитесь ссылкой!

Советуем почитать

Закрепленные

Понравившиеся

seo-love.ru

Как сделать редирект для Joomla

Категория: SEO Опубликовано: 24.07.2016

как правильно сделать редирект для cms joomlaДоброго времени суток, друзья! Сегодня я хочу затронуть достаточно важную и актуальную тему создания редиректа сайта. Что это такое? Это важная составляющая успешного продвижения интернет ресурса в сети. Это особая функция, выполняющая автоматическое перенаправление с определенной страницы на другую. Потребность в использовании редиректа может зависеть от множества факторов. Допустим у вашего сайта возникли дублирующие страницы, которые индексируются поисковыми роботами, в результате может ухудшиться их индексация, вплоть до вылета.

Но не будем о печальном, все таки существуют альтернативные методы борьбы с коварными дублями. Жаль меня никто не предупредил, и я сам наломал дров, в общих настройках для сайта на CMS Joomla включил «Перенаправление URL”. К чему это привело? В результате около 20 уже проиндексированных страниц имели суффикс index.php и являлись зеркалами. Кстати, о том как выполнить общие настройки Joomla я не так давно опубликовал объемную статью, с которой рекуомендую ознакомиться всем начинающим сайтостроителям.

Вот как выглядела ссылка страницы до активации параметра «Перенаправление URL»:

http://stimylrosta.com.ua/index.php/joomla

А вот после:

http://stimylrosta.com.ua/joomla

Согласитесь, во втором примере адрес выглядит куда перспективней, его легче запомнить, продиктовать или записать. Я все сделал правильно, но не вовремя.

Так вот, если ваше «сокровище» на CMS Joomla еще не блуждает просторами интернета, а тестируется на локальном сервере, не забудьте при переезде на хостинг вовремя активировать следующие команды, заглянув в «Общие настройки».

Joomla настройки SEO

- Включить SEF (ЧПУ). Аббревиатура расшифровывается как человеко-понятные адреса. В результате получится читабельная ссылка в адресной строке.

- Перенаправление URL. Включение этой функции позволяет избавиться от приставки index.php.

Две последние настройки на моем сайте выключены, но о них я вам тоже вкратце расскажу.

 включение перенаправления joomla

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

- Алиасы в Unicode. С помощью этого пункта вместо латинских букв будет прописываться ссылка на кириллице. То есть в адресной строке браузера адрес страницы будет не на английском, а на русском языке.

Как сделать редирект Joomla и избавиться от дублей

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

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

извещения об ошибках

извещения об ошибках2

рупор

Важный момент! Все настройки связанные с редиректом сайта осуществляются в файле .htaccess.

Существует множество комбинаций директив, позволяющих осуществить редирект сайта. Для того чтобы предотвратить склейку доменных имен у себя на сайте на CMS Joomla 3.6 я использую вот такую комбинацию символов:

Данная кодировка позволяет осуществлять редирект с www.mysait.com.ua на mysait.com.ua. Зайдите в корень сайта и отыщите файл .htaccess (по умолчанию htaccess.txt). Если у вас второй вариант, его следует переименовать, в противном случае он будет не работоспособным. Для этого следует воспользоваться FTP менеджером. Теперь, когда файл переименован, открываем его и приблизительно в 27 строке находим команду RewriteEngine On.

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

А теперь о наболевшем, какие же все таки волшебные строки позволят избавиться от суффикса index.php в адресной строке? А вот такие:

Порой в адресной строке можно встретить удивительные строки, как например вот эта:

http://stimylrosta.com.ua/http://stimylrosta.com.ua/frilans/advego/7-ot-advego-k-pryamym-sdelkam

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

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

 образец заполнения htaccess

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

Спасибо за внимание и до скорого на страницах Stimylrosta.

Не ленитесь, поделитесь!

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

Просмотров: 3845
Добавить комментарий

stimylrosta.com.ua

Как правильно оформить файл .htaccess. Redirect, RewriteRule, 404.

.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, или подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.

Вносить изменения в данный файл возможно в любом текстовом редакторе ( Notepad ++, Dreamweaver или просто в стандартном блокноте Windows ). Данный файл должен обязательно находиться в корневой директории сайта на сервере, так как его правила распостраняются на эту директорию и все поддиректории относящиеся к ней.

1. Переадресация страниц. Redirect.

Производится для указания клиенту (браузеру, поисковому роботу), что данная страница навсегда (если redirect 301) или временно (если redirect 302) переехала по другому адресу.

Код:

Redirect 301 /filename.html http://domain.tld/newfilename.php

где /filename.html — название старой страницы ( запись производится без указания протокола и домена, от корня сайта. )

http://domain.tld/newfilename.php — новое имя той же страницы. ( записывается с указанием протокола и домена. Домен может быть как тот же, так и любой другой ).

Например запись вида: 

Redirect 301 / http://domain.tld/

будет значить, что все страницы сайта с верхнего уровня перенесены на новый сайт domain.tld (на главную страницу!)

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

Код:

RedirectMatch permanent ^(.*)$ http://domain.tld$1

где ^(.*)$ — страница, которую нужно перенести с данного домена. (^ — начало «сравниваемой» строки, (.*) — любое количество любых символов, $ — конец сравниваемой строки), http://domain.tld — домен на который был перемещён сайт, $1 — выражение в скобках.

Правила подмены строк. RewriteRule.

Используется для замены для сервера адресной строки на необходимую ему (например, передача GET-параметров в адресе страницы)

Код:

RewriteEngine on RewriteRule ^(.+)/$ index.php?file=$1 RewriteRule ^(.+)/(.+).html$ index.php?file=$1&page=$2

Где RewriteEngine on — включение модуля Rewrite, ^(.+)/$ — исходная строка, адрес в браузере (^ — начало строки, (.+) — два или более любых символа — можно написать и (.*), / — экранированный символ «/»), index.php — файл-скрипт, который должен быть запущен, ?file=$1 — параметр, который должен быть передан ($1 — выражение в первых скобках).

То есть

Строка RewriteRule ^(.+)/(.+).html$ index.php?file=$1&page=$2 означает:Адрес видаhttp://domain.tld/filename/pagename.html сервер воспримет как http://domain.tld/index.php?file=filename&page=pagename

Внимание! В данном случае клиент (браузер, поисковый робот) ничего знать не будет. Для него адрес страницы не изменится. Запись вида:RewriteEngine on RewriteRule ^(.+)/$ index.php?file=$1 [R=301, L]будет совершать подмену не только для сервера, но уже и для клиента. Т.е. — это аналог директивы Redirect 301. «L» — будет означать, что это правило выполняется последним в файле .htaccess

Обработка ошибки 404

Позволяет выдавать одну определённую страницу вместо отсутствующих и вместо ошибки 404.

Код:

ErrorDocument 404 /404.php

где 404.php — страница, которая загружается вместо отсутствующей.

 

 

 

 

 

www.jtemplate.ru


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