Редирект index php route
Настройка правильного файла htaccess в Opencart
Позволяет отдавать файлы, которые физически находятся за пределами root директории, но на которые есть ярлыки (symbolic link). Нужно для работы mod_rewrite
Запрет прямого доступа к файлам с указанными расширениями, кроме robots.txt. Тут же закомментировано сообщение:
Можно заменить на альтернативный тип записи.
Блок mod_rewrite
Включение модуля mod_rewrite для модификации SEO URL.
Область преобразования. В этом случае весь магазин. Можно ограничить директорией, если ваш сайт инсталлирован в директории, например: RewriteBase /shop
Во время обращения к XML карте сайта по URL site.com/sitemap.xml перенаправляет на site.com/index.php?route=extension/feed/google_sitemap
То есть на динамическую карту сайта, которая генерируется стандартным модулем Opencart.
Если предыдущие регулярные выражения из директив RewriteRule не подошли, выполнение идет дальше.
Если файл, указанный в запросе не существует, тогда проверка продолжается и может выполниться строка с директивой RewriteRule.
Если index.php присутствует, то проверка не прошла, директива RewriteRule не выполнится, а файл index.php в итоге и загрузится со всеми get-параметрами (если есть).
Если запрашиваемый каталог (папка) не существует
Если запрашивается не файл с одним из указанных расширений
Тогда любой запрос переадресовывается на site.com/index.php?_route_[после параметра _route_ подставляется то, что запрашивалось – любая строка указанная в URL после домена]
GET-параметры, с помощью регулярного выражения, подставляются в строке вместо «$1»
Данная директива выполнится, если в URL не был указан файл index.php, что происходит в т. ч. при включении ЧПУ URL. В процессе загрузки приложения, проверяется, было ли включено ЧПУ в настройках. Если нет, то при получении параметра _route_ осуществится вызов контроллера ‘common/home’, который выведет домашнюю (главную) страницу. Если же ЧПУ было включено, выполняется контроллер ControllerStartupSeoPro из файла catalog\controller\startup\seo_pro.php или другой выбранный, где параметр _route_ будет разобран на части и из таблицы базы данных url_alias по переданным в GET-запросе элементам найдены алиасы, которые укажут скрипту путь к контроллеру/методу, который необходимо вызвать для вывода страницы.
Далее идут дополнительные настройки, которые могут понадобиться в специфичных ситуациях.
Практически каждый день сталкиваюсь с проблемами пользователей после вмешательств в htaccess. Не говоря уже о создаваемых постоянно темах на форуме с просьбами о помощи.
Порой из-за какой то ерунды типа изменения адреса одного товара происходит несколько страниц писанины бреда и конструированию огромных полотен правил.
Что НЕЛЬЗЯ делать через htaccess
В интернете десятки тысяч инструкций просто копируемых друг у друга десятилетиями. Очень многие из них вредны, т.к. были актуальны для сайтов на голом HTML без формирователя ЧПУ. Современные CMS самостоятельно строят формат адресации на сайте и нельзя вмешиваться в это через htaccess.
Наиболее распространенные вредные правила:
Что не нужно делать через htaccess
Множество единичных редиректов
Распространенные последcтвия вмешательства в htaccess
Часто ошибки всплывают со временем, когда обнаруживается выпадение страниц из поиска и идет разбор причин.
Когда нужно делать редиректы через htaccess
В глобальных правилах: за счет работы на более низком уровне, apache позволяет снизить расход ресурсов, т.к. их не много и требуется применение ко всем страницам.
Редирект с www на без оного, или наоборот
Редирект на https
Глобальные редиректы по маске
Пример как убрать product/ из адреса:
⚠ При наличии внешней ссылочной массы, желательно не менять адресацию на сайте, а перестроить формирователь ЧПУ и обойтись без редиректов.
⚠ Все глобальные правила дoлжны идти перед правилами CMS.
⚠ Правило WWW должно идти раньше чем https для исключения лишнего звена редиректа
Когда делать редиректы силами php (не CMS)
В случаях когда требуется настроить редиректы с адресов вида /product_info.php?products_id=123, /product/?id=345, и т.д., а именно когда есть возможность обратиться напрямую к php-файлу без инициализации CMS.
Разберем на примере site.com/product_info.php?products_id=XXX.
Создаем файл product_info.php в корне, где будет список редиректов и мини скрипт
не забываем в htaccess добавить в исключения путь /product_info.php* дабы избежать цепочек редиректов
Требование к менеджеру редиректов в CMS
Поиск/Проверка/Перебор не должен подключаться при каждом обращении к сайту, а только если страница не существует.
Разделение правил на части
Грамотное разделение правил на части позволяет сэкономить ресурсы. Нет необходимости перебирать правила там где они заведомо не сработают.
Возможность использования дополнительных данных
Менеджер редиректов может использовать функционал CMS для получения ряда данных, которые затем могут использоваться в механизме автоматизации.
Когда делать редиректы силами CMS в менеджере редиректов
Нет опыта и квалификации в работе с htaccess
Последствия деятельности шаловливыми ручками описал выше. Даже имея опыт, часто можно допустить ошибку/опечатку случайно.
Множество правил
Использование инструмента CMS не приводит к засорению htaccess и ряду сопутствующих проблем.
Да и банально намного удобнее добавлять/удалять/следить/редактировать.
Правила не являются глобальными
Если взять средний сайт с 500 уникальными посетителями в день и средней глубиной 3. Это минимум 1500 обращений в день, на самом деле в разы больше. В неделю же минимум 10 тыс. Плюс боты. И если повезет одно обращение будет к искомой странице с редиректом, ради него будет 10 тыс раз читаться правило из htaccess.
Дополнительный функционал
Правильная настройка редиректа
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Войти
Уже есть аккаунт? Войти в систему.
Похожий контент
750 10
Скачать/Купить дополнение
Редирект Универсал
Модуль добавляет в OpenCart функционал редиректов со страниц сайта на внутренние.
Где может использоваться
Модуль имеет возможности импорт/экспорта правил
При удалении товара модуль добавляет правило для 410 страницы (управляется отдельной настройкой)
При редактировании товара добавляет правило для 301 редиректа со старой на новую (управляется настройкой модуля)
Добавил chukcha Добавлено 27.11.2019 Категория SEO, карта сайта, оптимизация Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
2.3 ocStore 3.0
2.3.0.2.4
2.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет
Модуль добавляет в OpenCart функционал редиректов со страниц сайта как на внутренние, так и на внешние.
Где может использоваться
Модуль имеет возможности импорт/экспорта правил
При удалении товара модуль добавляет правило для 410 страницы (управляется отдельной настройкой)
При редактировании товара добавляет правило для 301 редиректа со старой на новую (управляется настройкой модуля)
Модуль перенаправления URL-адресов позволяет легко и быстро настраивать перенаправления на Вашем сайте через панель администратора. Это удобно, если Вы недавно изменили URL-адрес одного из своих продуктов либо просто удалили продукт. Расширение направит клиента на страницу с актуальной информацией. После чего клиент сможет сделать покупку.
Расширение совместимо с мульти-магазинами, что избавит Вас от необходимости отслеживать неработающие страницы и вручную менять каждую из них.
Как это работает?
Добавьте новое перенаправление. Для этого, укажите неправильный или неработающий URL-адрес (ошибка 404) и тот URL-адрес, на который Вы хотите перенаправить клиента. После чего нажмите кнопку сохранения: новое перенаправление работает!
Внимание. Перенаправления действуют только для страниц домена, на котором установлено расширение. В случае если расширение установлено, например, на www.domain.com, можно перенаправить страницы только с www.domain.com на страницы любых доменов, которые Вы хотите.
Также расширение позволяет отслеживать на Вашем сайте страницы, которые не найдены (404), и записывать их в таблицу.
Эти URL-адреса можно легко добавить в список перенаправлений, дополнительно указав действующий URL-адрес и код перенаправления.
Вы можете с помощью фильтра отсортировать данные таблицы (Url-адрес, IP-адрес, User-Agent). Еще в настройках можно указать определенные Url-адрес, IP-адрес, User-Agent, что позволяет игнорировать получение недействительных данных от ботов или других парсеров.
Функция Импорт / Экспорт перенаправлений через файл CSV позволяет:
— массово загрузить новые перенаправления,
— экспортировать (сохранить) список перенаправлений, которые уже внесены,
— экспортировать (сохранить) список страниц с 404 ошибкой.
С помощью функции Импорт / Экспорт Вы можете быстро проверить и отредактировать перенаправления для всех страниц Вашего сайта.
Модуль совместим и корректно работает с темами Journal3.
Применение модуля перенаправления URL-адресов помогает уменьшить на Вашем сайте количество страниц с 404 ошибкой. Это улучшает результаты индексации страниц и повышает позицию Вашего сайта в поисковой выдаче.
Особенности:
Неограниченное количество перенаправлений разного типа (301, 302 и 307) для устранения 404 ошибок. Автоматическое обнаружение 404 ошибок и изменение URL-адресов для поисковых систем. Возможность добавления перенаправлений друг за другом. Массовое добавление перенаправлений с помощью файла CSV. Возможность сохранения перенаправлений и 404 ошибок в файл CSV. Совместимость с мульти-магазином. Улучшает SEO и позицию URL страницы сайта в поисковой выдаче.
Инструкции по использованию:
Скачайте и установите расширение; На странице настроек выберите нужные параметры; Добавляйте новые перенаправления; Отслеживайте 404 URLs для создания перенаправлений; Используйте для удобства функцию CSV import / export; Сохраните изменения и улучшайте ваш SEO каждый день.
2263 30
Скачать/Купить дополнение
Redirect URLs Manager (Модуль перенаправления URL-адресов)
Модуль перенаправления URL-адресов позволяет легко и быстро настраивать перенаправления на Вашем сайте через панель администратора. Это удобно, если Вы недавно изменили URL-адрес одного из своих продуктов либо просто удалили продукт. Расширение направит клиента на страницу с актуальной информацией. После чего клиент сможет сделать покупку.
Расширение совместимо с мульти-магазинами, что избавит Вас от необходимости отслеживать неработающие страницы и вручную менять каждую из них.
Как это работает?
Добавьте новое перенаправление. Для этого, укажите неправильный или неработающий URL-адрес (ошибка 404) и тот URL-адрес, на который Вы хотите перенаправить клиента. После чего нажмите кнопку сохранения: новое перенаправление работает!
Внимание. Перенаправления действуют только для страниц домена, на котором установлено расширение. В случае если расширение установлено, например, на www.domain.com, можно перенаправить страницы только с www.domain.com на страницы любых доменов, которые Вы хотите.
Также расширение позволяет отслеживать на Вашем сайте страницы, которые не найдены (404), и записывать их в таблицу.
Эти URL-адреса можно легко добавить в список перенаправлений, дополнительно указав действующий URL-адрес и код перенаправления.
Вы можете с помощью фильтра отсортировать данные таблицы (Url-адрес, IP-адрес, User-Agent). Еще в настройках можно указать определенные Url-адрес, IP-адрес, User-Agent, что позволяет игнорировать получение недействительных данных от ботов или других парсеров.
Функция Импорт / Экспорт перенаправлений через файл CSV позволяет:
— массово загрузить новые перенаправления,
— экспортировать (сохранить) список перенаправлений, которые уже внесены,
— экспортировать (сохранить) список страниц с 404 ошибкой.
С помощью функции Импорт / Экспорт Вы можете быстро проверить и отредактировать перенаправления для всех страниц Вашего сайта.
Модуль совместим и корректно работает с темами Journal3.
Применение модуля перенаправления URL-адресов помогает уменьшить на Вашем сайте количество страниц с 404 ошибкой. Это улучшает результаты индексации страниц и повышает позицию Вашего сайта в поисковой выдаче.
100% правильный редирект в магазине Опенкарт (Opencart / OcStore 2.х и 3.x)
Обычный редирект в магазинах на Opencart CMS не срабатывает и выдает ошибку Internal Server Error (500). Решается эта задача с помощью другого синтаксиса Redirect 301.
Изменились ссылки на статьи, о магазине, товары и категории.
А я согласился, совсем забыв, что в магазинах Opencart эти редиректы делаются через одно место, стандартный синтаксис с Redirect 301 не работает!
В итоге вместо нескольких минут задача заняла у меня целый день, включая поиск в интернете правильного решения, тестирования и создание своего файлика XLS, чтобы больше вручную не делать все эти редиректы в Опернкарте.
Напомню стандартный синтаксис редиректа:
Redirect 301 /smartfony https://newshop.by/smartphone
Попробуйте прежде всего именно этот вариант, но он чаще всего не сработает в Opencart. Не расстраивайтесь, ниже есть и другие варианты редиректов.
Прописываем правильный редирект в Opencart вручную
И где-нибудь в начале файла после директивы RewriteEngine On и Options +FollowSymlinks вставляем редиректы.
Прежде всего, еще раз напомню, что стандартный редирект вида: Redirect 301 /старый адрес https://новый адрес в 99% случаев банально не работает и выдает ошибку.
RewriteCond %
RewriteRule ^(.*)$ https://ваш_домен.ru/новой_страницы/? [R=301,L]
Адрес старой страницы пишется без префиксов, вот так:
Автоматизировать редирект Opencart
Мне пришло в голову, что млин, каждый раз вручную вставлять правильные адреса в эти 2 строчки довольно утомительно.
Вот что получилось:
Качайте файл с моего сервера.
Прямо сейчас вы можете получить доступ к этому контенту для подписчиков. Достаточно ввести свой правильный емейл, и после подтверждения вам откроется полное содержимое этой страницы.
Получить бесплатно
Все получилось успешно!
Если на ваш емейл после подписки не приходит письмо для подтверждения уведомления (такое бывает иногда в зависимости от типа вашего ящика), то есть такие варианты:
Массовый редирект на новый домен
Конечно, лучше сразу правильно подбирать домен для магазина, но если у вас уже есть необходимость в нескольких именах, то с помощью 301 редиректа вы добьетесь того, что со всех дублей будет загружаться только основной домен сайта.
Простой редирект с другого домена
Редирект сразу с двух доменов
А если нужно сразу с двух доменов (например, английского и кириллистического) сделать редирект?
Редирект с поддомена
Работает, если нужно сделать редирект с поддомена на основной домен. Все страницы ведут туда, куда нужно, на соответствующие страницы основного сайта.
Массовый редирект внутри категории
Часто бывает, что поменялся адрес категории, а чпу для товаров остались прежними.
Нужно обязательно убедиться, что старый товар открывается без проблем. Ну типа такого: http://test1.moytop.com/kategoriya-new/zhenskaya-steganaya-kurtka-scanndi-cw2611
Если будет ошибка 404 (нет такой страницы, обновите кэш в Opencart и браузере и попробуйте еще раз). Опять ошибка? Тогда нужно прописывать редирект, если этого не сделать, то есть риск, что товары вылетят из индекса.
При этом товаров могут быть тыщи, согласитесь, нужно простое решение, не перелопачивать же все товары вручную!
Если у вас установлен Ocstore, то там есть SEO PRO и это дело работает автоматически. НО! Не у всех! И не всегда! И не в во всем контенте!
Поэтому если по каким-то причинам автоматом не получилось сделать, то нужно вручную массово поменять URL категории и при этом оставить рабочими все товары (автоматически проставить редирект, чтобы не было 404 ошибки).
Вот такой код редиректа у меня работает в Опенкарте, проверял на 2 и 3 версии:
Обязательно обратите внимание на следующее:
Редирект 404 страницы на главную
Я уже выше рассматривал как надо правильно настраивать редиректы на каждый URL, но ведь иногда не хочется заморачиваться и не делать такие точечные редиректы, а просто взять и переадресовать все 404 страницы, например, на главную страницу.
Не хочу разбирать почему это не особо правильный подход, но просто приведу решение как это сделать (проверял на Опенкарт 3, думаю на 2 тоже должно работать):
В этом случае все страницы, которые выдают ошибку 404 станут ссылаться на главную страницу опенкарт.
Редирект на SSL
Я уже ранее разбирал как делается редирект с http на https opencart, поэтому почитайте там.
Если ничего не получилось
Ну бывает, что никакие советы не помогают
Тут может и хостер быть косячный, и шаблон Opencart иметь какие-то хитрые модули на борту, и просто звёзды на сошлись.
В этом случае, не тратьте своё драгоценное время, отправляйтесь на биржу Кворк в раздел редиректы и вам сделают всё, что нужно всего за 500₽
Успехов в нелегком деле настройки редиректов для Opencart. Хотя это и удачная панелька в целом (читайте выбор движка для магазина), но редиректы в ней отличаются от других CMS.
Полезные цитаты: Сегодня я богат именно благодаря тому, что я сделал в свободное время (Р.Кийосаки)
Редирект для интернет-магазина на Opencart: через плагин или htaccess
Редиректы для интернет-магазина на CMS Opencart можно выполнить добавив записи в файл htaccess, ознакомится с чем можно в статье ниже.
Как сделать редирект через файл htaccess для интернет-магазина на Opencart
Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:
Redirect 301 site.ru/page1/ site.ru/page2/
Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.
Также допускается использование конструкции:
Redirect permanent site.ru/page1/ site.ru/page2/
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта на Opencart (public_html) лежит файл htaccess :
Как сделать перенаправление на другой домен?
В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:
RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]
Переадресация с http на https
При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:
Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:
RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]
Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]
Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]
301 редирект с домена без WWW на с WWW
В функции ниже осуществляется переход из www.poddomen.domain.ru на poddomen.domain.ru:
RewriteCond %
RewriteRule ^(.*)$ http://www.poddomen.domain.ru/$1 [R=301,L]
Если же первый способ не помог можно использовать данную версию:
С www на без WWW
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Также имеется второй метод не требующий ввода доменного имени:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
C https на http
При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:
301 редирект на http для одной страницы
В этой ситуации подойдет:
Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:
Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:
RewriteCond %
Форвардинг на https для конкретной страницы
Для этой цели можно воспользоваться:
RewriteCond %
С несуществующего файла
В этом случае можно будет применить:
RewriteRule ^(.*)$ /poddomen/script.php [R=301,L]
Также подойдет второй способ:
RewriteCond %
RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]
Перенаправление на подкаталог
В этом случае возможно пербрасывать пользователей с poddomen.domain.ru на подкаталог poddomen.
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^index.php(.*)$ /poddomen/$1 [L,QSA]
RewriteEngine on
RewriteBase /
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ /poddomen/$1 [L]
В случае, когда речь идет о www.poddomen.doamin.ru необходимо применить:
RewriteRule ^(.*)$ /poddomen/$1 [L]
С любой страницы на главную
RewriteRule ^(.*)$ index.php [L,QSA]
С поддомена на основной домен
Если требуется выполнить условие для всех поддоменов без исключения:
RewriteCond %
RewriteRule (.*) http://site.ru/$1?region=%1 [L,R=301,QSA]
Когда речь идет о конкретном поддомене следует использовать:
RewriteCond %
RewriteRule (.*) http://site.ru/$1?region=poddomen [L,R=301,QSA]
Как проверить работу 301 редиректа?
Для этого можно использовать инструмент проверки ответа сервера Яндекса:
Здесь вводим адрес первой страницы и видим следующее:
Как видим правило применилось и работает корректно.
Возможные проблемы с сайтами Opencart (русской сборки OcStore)
При редактировании файла
Так как в русской сборке OcStore после установки файл имеет имя htaccess.txt следует для исправления выполнить следующую посетить корневую папку сайта и найти файл «.htaccess.txt».
Переименовываем его и удаляем часть «.txt», так, чтобы файл назывался «.htaccess».
Переходим в «Дополнения»-«Менеджер дополнений» и очищаем Кеш (кнопка в правом-верхнем углу).
При работе с HTTPS
В первую очередь следует проверить настройки магазина перед перенаправлением на https так как в противном случае сайт может работать некорректно или не работать вовсе.
Далее переходим в сервер и выбираем.
Прокручиваем список и во вкладке «Безопасность» ставим «Да» у «Использовать SSL».
После этого переходим в на сервер в корневую папку и проверяем файл «config.php».
В нем в части про HTTPS проверяем указан ли адрес сайта как «https://site.ru», если нет указываем.
Аналогично следует проверить корректность отображения административной части, что необходимо сделать перейдя в папку «Admin».
Теперь открываем еще один файла «config.php».
Аналогично ищем ссылки на сайт с защищенным протоколом define и при необходимости исправляем на правильные (с https).