• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Редирект при настройке ЧПУ вукомерсс

earlnik

Новичок
Настроил ЧПУ редирект происходит почти везде, но для страниц товаров почему-то не срабатывает

настройки постоянных ссылок следующие:

Общие настройки
Произвольно: /%postname%/

Дополнительно
База категорий товара: product-category
База меток товара: product-tag

Постоянные ссылки товаров
Произвольная база: /product/

Вид ссылок сейчас, действуют оба вида:

старая ссылка https://banzai-sport.com/?product=zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48

новая ссылка https://banzai-sport.com/product/zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48/

почему так происходит и как настроить редирект для ссылок страниц товаров
 

earlnik

Новичок
как настроить редирект для ссылок страниц товаров

конкретно
с такой ссылки https://banzai-sport.com/?product=zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48
на такую https://banzai-sport.com/product/zhilet-utyazhelitel-kompakt-2-20-kg-razmer-44-48/

первая ссылка динамическая, создалась до настройки постоянных ссылок для вукомерс, вторая создалась после настройки постоянных ссылок, но работают обе, а нужна только последняя
 

earlnik

Новичок
Код:
<Files .htaccess>
order allow,deny
deny from all
</Files>

<Files xmlrpc.php>
  Satisfy any
  Order allow,deny
  Deny from all
</Files>


<IfModule mod_rewrite.c>
RewriteEngine On
AddDefaultCharset UTF-8
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.*banzai-sport.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) https://%{REMOTE_ADDR}/$1 [R=301,L]

</IfModule>
 

Kvistis

Опытный
Местный
Нету # BEGIN WordPress и # END WordPress
Код:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
AddDefaultCharset UTF-8
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.*banzai-sport.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) https://%{REMOTE_ADDR}/$1 [R=301,L]

</IfModule>

# END WordPress
 

earlnik

Новичок
это не влияет на редирект, прописал данные строчки, все также редирект не происходит
 

earlnik

Новичок
нашел такой вариант для установки редиректа


Код:
# Внешний редирект клиента со старых динамических URL на новые статические
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\
/index\.php\?product=([^&]+)&color=([^&]+)&size=([^&]+)&texture=([^&]+)&maker=([^\ ]+)\ HTTP/
RewriteRule ^index\.php$ //example.com/product/%1/%2/%3/%4/%5? [R=301,L]


но данный редирект для таких ссылок:

Старый динамический формат URL:


Код:
index\.php?product=widget&color=blue&size=small&texture=fuzzy&maker=widgetco

Новый статический формат URL:


Код:
/product/widget/blue/small/fuzzy/widgetco

а у меня такой:

Старый динамический формат URL:


Код:
/?product=bla-bla-bla

Новый статический формат URL:


Код:
/product/bla-bla-bla/

прочитав, что не правильное введение правил в .htaccess может повлечь нарушения в работе, я не стал экспериментировать на рабочем сайте

Посоветуйте, как правильно прописать редирект для таких страниц, кто в правилах для .htaccess разбирается
 

earlnik

Новичок
Помогли найти решение на другом форуме
Код:
RewriteCond %{QUERY_STRING} ([^=]+)=(.+)
RewriteRule ^$ /%1/%2? [R=301,L]

данное правило создало именно тот редирект который был нужен
 

earlnik

Новичок
небольшое уточнение, указанный выше редирект, как оказалось, нарушал работу редиректов для других видов ссылок, пришлось еще немного по изучать работу mod_rewrite и вывести в конце концов такой редирект
Код:
RewriteCond %{QUERY_STRING} ^product=(.+)
RewriteRule ^$ /product/%1? [R=301,L]
который, конкретно для этого вида ссылок
Код:
/?product=naimenovanie-tovara
стал перенаправлять на такой вид
Код:
/product/naimenovanie-tovara/
 
Сверху Снизу