@oldzas

Как можно исправить правило ЧПУ в htaccess?

Добрый день.

Есть строка: ?page=product&item=888

В файле htaccess пишу для нее правило:

RewriteEngine On
RewriteRule ^product/(.*)/$ index.php?page=product&item=$2 [L]

Правило не отрабатывает. Скажите, в чем ошибка?
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
дайте мне две строки которые было стало, поскольку вы сделали ошибку в самом начале
GET не является частью строки, че вы ее пытаетесь выделить?
# 301 --- http://www.test.com/product/333 => http://www.test.com/index.php?page=product&item=888
RewriteRule ^product/333$ /index.php\?page=product&item=888 [L,R=301]


А вот если у вас гет в изначальной строке то так
# 301 --- http://www.test.com/?page=333 => http://www.test.com/index.php?page=product&item=888
RewriteCond %{QUERY_STRING} (^|&)page\=333($|&)
RewriteRule ^$ /index.php?page=product&item=888 [L,R=301]

Все что остается это заменить 333 на регулярк и сгрупировать ее

# 301 --- http://www.test.com/?page=333 => http://www.test.com/index.php?page=product&item=888
RewriteCond %{QUERY_STRING} (^|&)page\=([0-9]{1,})($|&)
RewriteRule ^$ /index.php\?page=product&item=%2 [L,R=301]


где %2 аналог $2 но из RewriteCond
Но обычно этим занимается php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы