.htaccess opencart redirect 301. Редирект opencart
301 redirect для Opencart
категория: , Модули, Полезности
✎ Опубликовано: 19.01.2016 ✎ Обновлено: 06.12.2017 ☕ Просмотров: 10966 ✉ Комментарии: 40
301 redirect для Opencart это сплошная головная боль для разработчиков и владельцев магазинов. Для такой задачи я решил написать свой модуль
301 redirect для Opencart это сплошная головная боль для разработчиков и владельцев магазинов. Если делать это стандартным способом через .htaccess в одну строку, то получим на выходе странный url и несуществующую страницу. Странный он потому что редирект якобы пошел, но в конце нового адреса у нас прицепляется хвост ?_route_=.. Всему виной идет строка RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Решается эта проблема несколькими способами, либо правим оригинальный код opencart-а в файле .htaccess, либо на каждое условия переадресации у нас будет 3 строки кода. Это очевидно неудобно и слишком сложно.
В процессе работы с движком и выполнения множества заказов я задумался о удобной системе редиректов. Главным условием было простота и работоспособность. Первое что пришло в голову это смотреть на альтернативные способы 301 редиректа, а именно на php. Было принято решение написать свой редиректор для Opencart.
Преимущество модуля
- Условия для редиректов прописываются прямо в админке!
- Установка модуля пару секунд, ничего нигде настраивать не нужно
- Работает на всех версиях Opencart 1.x-2.x
- Никакие файлы не перезаписываются и ничего не надо править.
После установки модуля переходим в настройки магазина и в первой вкладке у нас появится поле ввода условий в формате
old-url==new-url old2==new2 ...То есть новый редирект пишем с новой строки и разделяем от куда и куда двойным символом равно «==» В общем все предельно просто.
Как скачать модуль
Бесплатно скачать модуль можно здесь https://opencartforum.com/files/file/2908-menedzher-301-redirektov/
for-opencart.com
redirect - .htaccess opencart redirect 301
Я просто переношу свой сайт с asp на opencart. В .htaccess я хотел бы сделать некоторую переадресацию, чтобы мой клиент мог использовать старую ссылку для доступа к
внутри .htaccess
redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us redirect 301 /downloads.asp http://www.example.com/downloadsДля связи с нами, которые работают отлично, однако, для URL-адресов для загрузки, это не сработало. когда я получаю доступ к http://www.example.com/downloads.asp, он перенаправляется на http://www.example.com/downloads?_route_=downloads.asp и Opencart показывают, что страница не найдена. Для http://www.example.com/downloads мы установили дружественный URL для SEO в бэкэнд-системе.
Мы имеем доступ к
http://www.example.com/information/downloads
http://www.example.com/downloads
но мы не можем получить доступ с нормальной ссылкой
http://www.example.com/index.php?route=information/downloads
Следующим является мой полный .htaccess
# Prevent Direct Access to files <FilesMatch "\.(tpl|ini)"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us redirect 301 /downloads.asp http://www.example.com/downloads============ ДРУГИЕ ИСПЫТАНИЯ ========================
Я проверил это на моем локальном хосте, я узнал, что это отличный результат. Однако моя проблема все еще не решена.
Я запускаю .htaccess из http://localhost/example и http://example (добавлен виртуальный каталог)
Для http://localhost/example
redirect 301 /example/downloads.asp http://localhost/example/downloads/и
Для http://example
redirect 301 /downloads.asp http://example/downloads/Затем я попытался перенаправить ссылку на мою версию в реальном времени, с localhost (http://example)
redirect 301 /downloads.asp http://www.example.com/downloads/Я обращаюсь к http://example/downloads.asp
Браузер перенаправляет мне
http://www.example.com/downloads?route=downloads.asp
ЗНАМЕНИТО
В версии LIVE я не добавил код перенаправления [ОЧЕНЬ УВЕРЕННО ДЛЯ ЭТОГО]
Но в Live-версии я получаю доступ непосредственно с enter
http://www.example.com/downloads
Я не уверен, почему из localhost redirect 301 в live версию выйдет
http://www.example.com/downloads?route=downloads.asp
Любая идея?
qaru.site
Редирект 301 для Joomla, Opencart и прочего
Редирект – перенаправление с одной страницы на другую. Редирект, помогает сохранить позиции сайта в поисковых системах, и сохранить PR (page rank). Если планируется по каким-то причинам изменение домена сайта, то ни в коем случае не следует сразу бросать старый домен. Нужно иметь ввиду, что посетители продолжают по нему заходить на сайт, и поэтому целесообразно их перенаправить на новый сайт.
С HTTP на HTTPS
Если следуя настоятельной рекомендации и запугиванию Google, был подключен HTTPS, то необходим редирект с обычного http://. Это можно сделать так:
RewriteEngine On RewriteCond %{ENV:HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]Устранение дублей
Собственно говоря, работа с редиректом классифицируется как внутренний этап SEO, или On-Site SEO, при этом убираются дубли страниц, наличие которых препятствует продвижению сайта. Если существуют страницы с одинаковым содержанием, их лучше «склеить». Это осуществляется с помощью работы с файлом .htaccess.
C WWW не не-WWW и на оборот
С точки зрения SEO, не страница не должна быть доступна по нескольким адресам. Так вот www.site.com и просто site.com – это разные адреса одного сайта. Поисковики это не любят. Что бы внять рекомендациям SEO, нужно удалить дубль. Сделать это можно таким образом:
С www на не-www
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]С не-www на www
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]Joomla редиректы
Для Joomla, в которой может быть масса дублей, можно попробовать такой метод:
Options +FollowSymLinks RewriteEngine on RewriteCond %{QUERY_STRING} ^option=com_content&view=frontpage$ RewriteRule ^(index\.php)?$ http://вашсайт.com/? [R=301,L]Вот этот длинный хвост часто появляется как дубль главной страницы в Joomal:
option=com_content&view=frontpageЕго полный вид таков:
http://site.com/index.php/?option=com_content&view=frontpageПо такому принципу можно перенаправлять все хвостатые адреса, если в Joomla включили опцию seo по наитию свыше. Например:
Options +FollowSymLinks RewriteEngine on RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=103&Itemid=24$ RewriteRule ^(index\.php)?$ http://site.com/new_page? [R=301,L]Если нужно перенаправить с http://site.com/index.php (часто поисковики выдают этот вариант вместо желаемого, если сайт на Joomla или еще какой-то CMS) на site.com, то можно сделать так:
RewriteCond %{THE_REQUEST} ^.*/index\.php RewriteRule ^(.*)index.php$ /$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index\.php RewriteRule ^(.*)index.php/$ /$1 [R=301,L]Opencart
В Opencart главная страница имеет вид таков:
www.site.com/index.php/?route=common/home
Это дело вообще нужно решать самим разработчикам OpenCart, но видимо в этом хвосте есть некий знак для посвященных в тайны Вселенной. Так что решать задачу вам. Можно просто найти и заменить в header.tpl и footer.tpl (папка templates/common) <?php echo $home; ?>на
<?php echo $base; ?>А можно сделать редирект на www.site.com в .htaccess так:
RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteRule ^index\.php$ http://site.com/? [R=301,L]С категории на категорию с чпу адресом, если вдруг решили поменять адреса страниц:
Первоначальный урл был длинный и уродливый типа www.site.com/index.php?path=83_94_113&route=product/category. Придаём ему человеко-понятный вид:
RewriteCond %{QUERY_STRING} ^path=83_94_113&route=product/category$ RewriteRule ^index\.php$ http://site.com/new-category? [R=301,L]Вот еще один способ редиректа динамических адресов, в частности у категорий Textpattern, которые привязаны к некой секции, и имеют такой вид:
www.site.com/katalog?c=okna-pvkhПосле долгих проб и ошибок был найден такой вариант – в примере редирект на главную:
RewriteCond %{QUERY_STRING} ^c=okna-pvkh$ [NC] RewriteRule katalog http://site.com/? [R=301,L]Редирект со старого на новый домен
После переноса сайта на новый домен для того что бы сохранить страницы в поисковой выдаче, необходимо осуществить редирект, или перенаправление. Если адреса разделов, категорий, и страниц остались те же при изменении домена, то на старый домен лучше попридержать, так как с него будет установлен редирект на новый. Если посетитель, к примеру, зашел по ссылке –
old-site.comон моментально попадет на
new-site.comСамый простой способ это сделать в файле .htaccess таков –
Redirect 301 http://старый-сайт.com http://новый-сайт.com Redirect Permament http://старый-сайт.com http://новый-сайт.comРедирект с несуществующих страниц.
Если поменялись адреса страниц, необходимо позаботиться, чтобы новые страницы быстро попали в индекс, чтобы сайт не просел в выдаче из-за возможных 404 ошибок. Для этого нужно перенаправить с несуществующих страниц, но проиндексированных поисковиками страниц (то есть эти страницы еще есть в базе данных поисковых систем – при посещении этой страницы посетитель увидит ошибку 404), на новые существующие.
Разумеется, сделать редирект с каждой страницы трудоемкий процесс, однако если сайт имеет несколько разделов, которые отображаются в адресах, то можно свести к минимуму несуществующие страницы. Таким образом, посетитель вообще не заметит никаких неудобств на сайте, а поисковики не понизят статус сайта.
Самый простой делается как и при редиректе с домена на домен:
Redirect 301 /oldpage.html http://site.com/newpage.html Redirect Permament /oldpage.html http://site.com/newpage.htmlЕсли не сработал вышеуказанный способ, попробовать стоит такой
RewriteRule ^oldpage.html http://site.com/newpage.html [L,R=301]Если нужен редирект с любого адреса включающего урл родительской категории, есть такой вариант:
RewriteRule ^old_caregory http://site.com/new_category [L,R=301]Таким образом любая страница такого вида www.site.com/old_caregory/page.html будет перенаправлять посетителя на тот указанный адрес. В этом примере – new_category.
Редирект осуществляется с помощью ряда методов –
- Файл .htaccess
- PHP
- JavaScript
О чем более подробно речь пойдет в последующих статьях. Эта статья редактируется и дополняется постоянно новыми примерами, коих в природе много. Увы, не всегда правило Redirect 301 /старая_страница http://site.com/новая_страница работает безотказно.
bizzona.net