Переадресация с помощью htaccess на уровень выше

Евгений Иванов
На сайте с 26.07.2006
Offline
272
1327

Грубо говоря тут site.ru/pigmenty/4189/ у меня товар в категории пигменты

Но когда товар пропадает, там 404 ошибка, и я бы хотел с несуществующего товара перенаправлять не на главную, а на категорию пигментов? то есть если site.ru/pigmenty/4189/ отдает 404 ошибку, то перенаправлять на site.ru/pigmenty/ то есть на категорию выше (

Подскажите как сделать :)

P.S Категорий на сайте несколько, грубо говоря site.ru/категория1/4189/ site.ru/категория2/4189/ site.ru/категория3/4189/ и так далее

Сложность еще в том, что категории не одноуровневый, то есть может быть и так

site.ru/catalog/категория/категория/категория/товар

Суть в том что бы при ошибки 404 перебрасывать на уровень выше

Буду очень благодарен + :)

Wap.Click / Вап.Клик / Я - рядом!
M
На сайте с 04.12.2013
Offline
223
#1

.htaccess-то тут причем? Делайте в обработчике 404-ой или непосредственно в модуле, отвечающем за вывод страниц товаров (например, можно не удалять запись о товаре, а пометить его отсутствующим и по этому признаку делать перенаправление).

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
K
На сайте с 23.12.2014
Offline
5
#2

Сама 404 ошибка в htaccess обрабатывается примерно так

ErrorDocument 404 http://site.ru/error/404.html

вот и переводите куда надо.

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

WordPress для начинающих (http://belentsov.ru) Ваш личный помощник выполнит любую работу в ЛЮБОЕ время (http://www.work-zilla.com?ref=121253&sub=search)
J
На сайте с 20.02.2014
Offline
120
jkm
#3

Если apache версии 2.4 и подключены mod_headers, mod_setenvif, то можно ловить страницы с ошибкой 404 и добавлять заголовок Refresh с нужным адресом.


SetEnvIf Request_URI ^/(pigmenty)/\d+/$ CATEGORY_URL=/$1/

Header set Refresh "0; http://%{HTTP_HOST}e%{REDIRECT_CATEGORY_URL}e" "expr=%{REQUEST_STATUS} == 404 && -n reqenv('REDIRECT_CATEGORY_URL')"

Указать несколько категорий в шаблоне можно так


^/(pigmenty|cat1|cat2|cat3)/\d+/$
K
На сайте с 03.06.2015
Offline
45
#4

Когда по такой ссылке зайдет чел с поиск в ПС, он подумает - опять надули - подсунули спамную ссылку, заманили товаром, а выдали список который мне не нужен.

Логично? Логично написать сорри, такого товара больше нет, вы можете заказать, или позвонить, или написать если сильно очень надо, или посмотрите что есть по ссылке - и тут ссылка на тот самый уровень выше.

Так - человечно. Вы сами-то интернетом пользуетесь?

Это элементарно отмотать уровень скриптом. Зависит от реализации, но самое простое - разбить путь по косым и собрать минус последний элемент.

MYSQL PHP JS HTML CSS SEO TXT США СССР

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий