Как сделать 301 Redirect в Opencart 2 ? Opencart 2 htaccess


Настройка .htaccess для OpenCart | Истрункция как поднять бабла

Как я говорил уже в предыдущей статье нам необходимо избавится от оставшихся дублей главной страницы нашего магазина на Opencart.

В этом нам поможет .htaccess надеюсь вы его уже переименовали из .htaccess.txt если нет то самое время это сделать и обратите внимание ТОЧКА в начале стоит не случайно.Приступим к его редактированию и добавим следующие строки:

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC] RewriteRule ^(.*)$ http://site.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/ RewriteRule ^index\.html$ / [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ / [R=301,L] RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteCond %{REQUEST_METHOD} !^POST$ RewriteRule ^index\.php$ http://%{HTTP_HOST}? [R=301,L]

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]

RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/

RewriteRule ^index\.html$ / [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ / [R=301,L]

RewriteCond %{QUERY_STRING} ^route=common/home$

RewriteCond %{REQUEST_METHOD} !^POST$

RewriteRule ^index\.php$ http://%{HTTP_HOST}? [R=301,L]

Понятное дело site.com необходимо изменить на адрес Вашего сайта.Итак первые 2 строки отвечают за склейку вашего сайт с www и без www чтобы мы всегда имели только один адрес http://site.com.3-4 строка убирают index.html в конце (у Вас может не работать так как в настройках хостинга стоит обрабатывать статические файлы .html) но это не беда так как Опенкарт отдаст по этому адресу корректный статус 404.5-6 делают тоже что и строки 2-3 но убирают index.php.7-9 убирают /index.php?route=common/home о котором мы с Вами говорили в предыдущей статье.

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

Хуйнаныр(14)Очко(7)

ocshop.info

Файл .htaccess для OpenCart 2+

Поскольку файл .htaccess имеет важное значение в работе всего интернет-магазина, рассмотрим его подробно, что же он в себя включает по-умолчанию. Тем более, что "с коробки" он содержит в себе много лишнего. Заодно пройдемся по основным директивам данного файла.Файл имеет много комментариев, я буду расписывать только работающие строки.
1.
Options +FollowSymlinksПозволяет отдавать файлы, которые физически находятся за пределами root директории, но на которые есть ярлыки (symbolic link). Нужно для работы mod_rewrite
2.
Options –IndexesЗапрет выдачи листинга пустого каталога. То есть в каталоге, где отсутствует файл показываемый по-умолчанию (например index.html) не будет отображаться содержимое со списком файлов. Посетитель получит HTTP ошибку 403 — access forbidden.
3.
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Require all denied </FilesMatch>Предотвращение прямого доступа к файлам с указанными расширениями, кроме robots.txt. Тут же закомментировано сообщение:"Для apache 2.2 и старее замените «Require all denied» этими двумя строками:"# Order deny,allow# Deny from allЕсли у apache вас 2.4+ - оставляем как есть.

Можно заменить на

<FilesMatch "\.(tpl|ini|log|txt)"> Order deny,allow Deny from all </FilesMatch> <Files robots.txt> Allow from all </Files>
Блок mod_rewrite.
4.
RewriteEngine OnВключение модуля mod_rewrite для модификации URL.
5.
RewriteBase / Область преобразования. В данном случае весь сайт. Можно ограничить какой-либо директорией, например: RewriteBase /dir
6.
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]При вызове карты сайта для поисковиков по ссылке site.com/sitemap.xml переадресовать на site.com/index.php?route=extension/feed/google_sitemap то есть на контроллер из файла catalog\controller\extension\feed\google_sitemap.php который генерирует карту.
7.
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]Предполагалось, что по ссылке site.com/googlebase.xml будет переадресация на site.com/index.php?route=extension/feed/google_base, то есть вызываться контроллер из файла catalog\controller\extension\feed\google_base.php Данный контроллер должен работать с базой данных Google, которая уже не актуальна. Данное правило можно удалить.
8.
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]При попытке получения содержимого папки system/download по ссылке site.com/system/download/… переадресовывать на site.com/index.php?route=error/not_foundгде вызывается метод index контроллера catalog\controller\error\not_found.php выводящий сообщение «страница не найдена».В OpenCart 2.3 (может и в более ранних версиях) папки download в system нет, поэтому данное правило можно удалить. К тому же, в папке system есть свой файл .htaccess ограничивающий доступ к ее содержимому.

Если предыдущие регулярные выражения из директив RewriteRule не подошли, выполнение идет дальше.

9.
RewriteCond %{REQUEST_FILENAME} !-fЕсли файл, указанный в запросе не существуетА файл обычно index.php. Если в строке он отсутствует, тогда проверка продолжается и может выполниться строка с директивой RewriteRule. Если index.php присутствует, то проверка не прошла, директива RewriteRule не выполнится, а файл index.php в итоге и загрузится со всеми get-параметрами (если есть).
10.
RewriteCond %{REQUEST_FILENAME} !-dЕсли запрашиваемый каталог (папка) не существует
11.
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)Если запрашивается не файл с одним из указанных расширений
12.
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]тогда любой запрос переадресовывается на 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-запросе элементам найдены алиасы, которые укажут скрипту путь к контроллеру/методу, который необходимо вызвать для вывода страницы.

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

13.
Последним блоком идет показ ошибок и предупреждений. Для процесса разработки магазина, можно раскомментировать строки:php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag track_errors on #показывать все ошибки для PHP 5.4.x, 5.6.x php_value error_reporting 32767Итого настройки файла .htaccess для OpenCart 2+ без лишних комментариев и с учетом того, о чем я писал выше:Options +FollowSymlinks Options -Indexes ##Запрещаем доступ к файлам указанных расширений <FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Require all denied </FilesMatch> ##Переопределяем URL с помощью mod_rewrite RewriteEngine On RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] ##Показываем все ошибки и предупреждения при разработке магазина. ##Потом закомментировать php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag track_errors on #показывать все ошибки для PHP 5.4.x, 5.6.x php_value error_reporting 32767

klisl.com

Стандартный htaccess для OpenCart | IT notes

Не впервые сталкиваюсь с тем, что движок сам не генерирует файл .htaccess при включении ЧПУ(Seo-url).

В дистрибутиве этот файл также может отсутствовать.

По этой причине размещаю его у себя на сайте.

 

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listingOptions -Indexes

# Prevent Direct Access to files<FilesMatch «(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))»>Require all denied## For apache 2.2 and older, replace «Require all denied» with these two lines :# Order deny,allow# Deny from all</FilesMatch>

# SEO URL SettingsRewriteEngine On# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers### Uncomment the commands by removing the # sign in front of it.### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields# php_value max_input_time 200

# 7. disable open_basedir limitations# php_admin_value open_basedir none

Похожее

itnotes.info

[Решено] Как сделать 301 Redirect в Opencart 2 через .htaccess ?

На одном из своих личных проектов, а именно для интернет магазина на opencart 2 (версии 2.3.0.3) по продаже обуви UGG Australia (приглашаю вас купить угги в моем магазине и дарю Вам этот промокод nibblugg при покупке он даст Вам скидку в 500 рублей ) я реализовал СЕО фильтр для того, что бы раскидать и размножить категории, что бы максимально охватить семантическое ядро в этой большой тематике, но дело в том, что в этом шаблоне которое я использовал был один существенный недостаток, меню там было настроено так, что оно выводило только те пункты которые были отмечены в категориях. Время на разбор шаблона у меня нет, потому как завтра утром должно все работать я придумал небольшую хитрость которая будет работать через 301 редирект.

Но тут меня постигла неудача, в opencart 301 редирект работает ни так, как допустим на wordpress и прописав в .htaccess

301 /старая ссылка /новая ссылка  — не будет работает редирект

В итоге покопавшись на форумах нашел ответ как сделать на opencart с ЧПУ 301 редирект.

Для этого открываем файл и прописываем след директивы:

RewriteCond %{QUERY_STRING} ^route=product/category&path=59$ RewriteRule ^index\.php /new-page.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^route=product/category&path=59$

RewriteRule ^index\.php /new-page.html? [R=301,L]

Способ конечно может быть и не тянет на гремми, но все работает и все замечательно!

 

Есть еще один вариант 301 редиректа если надо перенаправить со старого сайта ссылку на новую страницу и дальше ее передать на ЧПУ

Redirect 301 /старая ссылка /index.php?route=product/category&path=59 RewriteCond %{QUERY_STRING} ^route=product/category&path=59$ RewriteRule ^index\.php /new-page.html? [R=301,L]

Redirect 301 /старая ссылка /index.php?route=product/category&path=59

RewriteCond %{QUERY_STRING} ^route=product/category&path=59$

RewriteRule ^index\.php /new-page.html? [R=301,L]

Вот таким незамысловатым способом делается 301 redirect в opencart 2

www.nibbl.ru


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