.htaccess opencart redirect 301. Редирект opencart


301 redirect для Opencart

категория: , Модули, Полезности

✎ Опубликовано: 19.01.2016 ✎ Обновлено: 06.12.2017 ☕ Просмотров: 10966 ✉ Комментарии: 40

301 redirect для Opencart

301 redirect для Opencart это сплошная головная боль для разработчиков и владельцев магазинов. Для такой задачи я решил написать свой модуль

301 redirect для Opencart это сплошная головная боль для разработчиков и владельцев магазинов. Если делать это стандартным способом через .htaccess в одну строку, то получим на выходе странный url и несуществующую страницу. Странный он потому что редирект якобы пошел, но в конце нового адреса у нас прицепляется хвост ?_route_=.. Всему виной идет строка RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Решается эта проблема несколькими способами, либо правим оригинальный код opencart-а в файле .htaccess, либо на каждое условия переадресации у нас будет 3 строки кода. Это очевидно неудобно и слишком сложно.

В процессе работы с движком и выполнения множества заказов я задумался о удобной системе редиректов. Главным условием было простота и работоспособность. Первое что пришло в голову это смотреть на альтернативные способы 301 редиректа, а именно на php. Было принято решение написать свой редиректор для Opencart.

Преимущество модуля

После установки модуля переходим в настройки магазина и в первой вкладке у нас появится поле ввода условий в формате

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.

Редирект осуществляется с помощью ряда методов –

О чем более подробно речь пойдет в последующих статьях. Эта статья редактируется и дополняется постоянно новыми примерами, коих в природе много. Увы, не всегда правило Redirect 301 /старая_страница http://site.com/новая_страница работает безотказно.

bizzona.net


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