Jump to content


Photo
- - - - -

301 редирект, удаление слеша через htaccess нарушает корзину


Best Answer Lyasik , 12 September 2015 - 15:31

Было:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

 

Стало:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteCond %{REQUEST_URI} !^/component
RewriteRule ^(.*)(/)$ $1 [L,R=301]

 

Правило срабатывает везде, у страниц убирается слеш. Страница корзины не тронута и работает исправно.

Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 Lyasik

Lyasik
  • JBZoo User (rus)
  • User rate: 0.3
  • posts: 12
  • topics: 5

Posted 05 August 2015 - 15:42

Всем привет.

Я делаю редирект 301 через htaccess, убирая слеш в конце страниц:

 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

 

страницы вида /about/, /terms/ и прочие теперь стали /about, /terms

 

но это также повлияло на работу корзины.

было - стало:

 

/component/zoo/?controller=basket&task=index&app_id=2&Itemid=125&nocache=832558524

/component/zoo?controller=basket&task=index&app_id=2&Itemid=125&nocache=832558524

 

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

 

Собственно подскажите, пожалуйста, как мне настроить htaccess, чтобы он убирал слеши в конце всех моих страниц, но не трогал корзину.

Спасибо.


Edited by Lyasik, 05 August 2015 - 15:43.

  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 06 August 2015 - 09:16

Редирект не пропускает GET/POST параметры.

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


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 Lyasik

Lyasik
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.3
  • posts: 12
  • topics: 5

Posted 12 September 2015 - 15:31   Best Answer

Было:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

 

Стало:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteCond %{REQUEST_URI} !^/component
RewriteRule ^(.*)(/)$ $1 [L,R=301]

 

Правило срабатывает везде, у страниц убирается слеш. Страница корзины не тронута и работает исправно.


  • 0




Click to return to top of page in style!