Настроит 301 редирект для товаров в категории

scorpion-ds

Новичок
На сайте были имеются такие URL:
http://firmache.com/zhenskie-kollekcii/futbolki-all-in - категория
http://firmache.com/zhenskie-kollekcii/futbolki-all-in/imagenarium_t-shirt_woman - конечный товар

Появилась необходимость изменить "futbolki-all-in" на "zhenskie-3d-futbolki", в итоге вышло так:
http://firmache.com/zhenskie-kollekcii/zhenskie-3d-futbolki - та же категория
http://firmache.com/zhenskie-kollekcii/zhenskie-3d-futbolki/imagenarium_t-shirt_woman - тот же товар

С ссылки:
http://firmache.com/zhenskie-kollekcii/futbolki-all-in
был сделан 301 редирект на:
http://firmache.com/zhenskie-kollekcii/zhenskie-3d-futbolki

Код:
RewriteRule ^zhenskie-kollekcii/futbolki-all-in$ http://firmache.com/zhenskie-kollekcii/zhenskie-3d-futbolki [R=301,L]
Но не понятно, как можно сделать редирект для товаров в таких категориях, был бы у товаров в конце к примеру ".html", можно было бы к нему привязать условие, но тут не понятно, что следует сделать. Если я не ставлю конец "$", то редирект происходит для всех "похожих ссылок" на категорию.

Подскажите, можно ли по принципу категорий сделать 301 редирект для товаров в этих категориях?
 

scorpion-ds

Новичок
Вроде все работает, кроме этого:
Код:
RewriteRule ^muzhskie-kollekcii/svitshoty-1?(.*)$ http://firmache.com/muzhskie-kollekcii/muzhskie-3d-svitshoty/$1 [R=301,L]
RewriteRule ^muzhskie-kollekcii/svitshoty-3?(.*)$ http://firmache.com/muzhskie-kollekcii/svitshoty-dlja-muzhchin/$1 [R=301,L]
При переходе на:
http://firmache.com/muzhskie-kollekcii/svitshoty-3
происходит редирект на:
http://firmache.com/muzhskie-kollekcii/muzhskie-3d-svitshoty/3
то есть срабатывает первое условие (других похожих нет), если их поменять местами так вообще бесконечная переадресация.

Не понимаю, каким образом может срабатывать первое условие, судя по всему проблема в фрагментах "-1" и "-3".
 

scorpion-ds

Новичок
Спасибо, сейчас все нормально.

Ошибка была моя, слеш я пропустил преднамеренно, так как в первый раз у меня не срабатывало условие, для адресов вида:
zhenskie-kollekcii/futbolki-all-in

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

Но наверно это был какой-то кеш браузера, так как теперь со слешами и без них все нормально.
 

AnrDaemon

Продвинутый новичок
301 редирект кешируется браузером. Когда проводишь настройку-отладку, используй 302 или 307.
 
  • Like
Реакции: vld

scorpion-ds

Новичок
Подскажите еще момент, можно ли сделать редирект в .htaccess, при этом первоначально вернуть не 301, а 404?

Код:
RewriteCond %{REQUEST_URI} index.php$
RewriteCond %{QUERY_STRING} ^(task=|option=|page=)(.*)
RewriteRule (.*) http://***.com.ua/404? [R=301,NC,L]
там вообще странная ситуация, я и на PHP возвращал 404, а потом вызывал "Loaction: ...", тем не менее первоначальный (до переадресации) код становился 302, если убрать "Location: ...", то все было нормально (код 404), раньше у меня получалось так сделать.
 

scorpion-ds

Новичок
Вроде раньше у меня работало:
PHP:
header("HTTP/1.0 404 Not Found", true);
header( 'Location: http://***.com.ua/404');
Возвращало код 404, а потом делало перезагрузку, хотя возможно я что-то путаю.
 

scorpion-ds

Новичок
Нет, то я чет напутал, если на PHP вызвать "'Location", то получаем 302.
 
Последнее редактирование:

scorpion-ds

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

В качестве примера, что такое возможно приводится такой ответ сервера:
http://joxi.ru/Dww1VP3JTJAkXf41bCY
 

AnrDaemon

Продвинутый новичок
Ты неверно понимаешь значение HTTP статусов. Тебе надо не ПЕРЕАДРЕСОВЫВАТЬ на страницу, а ВОЗВРАЩАТЬ СТАТУС 404.
Если ты переадресуешь на какую-то ДРУГУЮ страницу, статус будет относиться к этой другой странице, а не к той, с которой пошло перенаправление. И пользователь, получивший такой 404-й ответ, посмотрит в адресную строку и скажет "что за хуйня, я НЕ ВВОДИЛ ЭТОГО АДРЕСА?!" и будет продолжать долбиться по нужному ему (пользователю) адресу, пока не убедится, что сайт писал дебил.
 

scorpion-ds

Новичок
Понятно. Проект не мой, но на сколько я понял, сделали так, что для ненужных страниц возвращается статус 404 и показывается "Страница 404", без всяких переадресаций.
 

AnrDaemon

Продвинутый новичок
Это как раз нормальное поведение. Хотя если известно, что страница тут раньше была, показывать 404, по моему мнению, некорректно.
 

scorpion-ds

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