Первая часть url просто дополнительный текст, вторая как вы уже поняли id
samsung_galaxy_note_lll_white/p303594/
Все очень просто, при обращении к товару проверяем вначале id '303594' после дополнительный текст этого id из бд сверяем с текстом полученным в запросе. Если тексты не одинаковы будет составлен правильный url для этого id и редирект на него
Пример:
мы изменили первую часть url
http://rozetka.com.ua/samsung_galaxy_note_new/p303594/
Готовой программы не знаю, но можно взять скрипт который постит инф в сообществе, дописать простой пару строк которые берут инф с бд и передает данные скрипту который постит
Нет, сейчас ПС перестают передавать инф о запросах пользователей. Гугл уже не передает, яндекс идет к этому.
Зачем мучать постоянными проверками если можно это сдеать при при загрузке?
При обработке запроса скрипт получает информацию о пользователе, в том числе и url сайта с которого перешел.
$referer = $_SERVER['HTTP_REFERER'];
Если пользователь перешел из адресной строки переменная будет пустая, в остальных случаях url страницы с которой был переход.
Анализируйте и показывайте пользователю то что вам нужно.
В этом случае 301 редирект веб сервер не сможет сделать
Нужно делать редирект в коде, то есть получили запрос:
index.php?productID=67 посмотрели в бд уникальное имя для id 67 и сделали редирект на /chamber_for_wine/name_product
Если движок самописный вполне возможно что нет такой функциональности. Контент могли просто импортировать в бд. mvc, написать эту функциональность
RewriteEngine On RewriteRule ^index.php?productID=(.*)$ chamber_for_wine/$1 [R=301] RewriteRule ^chamber_for_wine/(.*)$ index.php?productID=$1 [L]
В коде сайта укажите не относительные пути а путь от корневой директории
Например вместо href='style.css' укажите href='/style.css'
может так: index.php?productID=67 > chamber_for_wine/67
Нет. [R=301] - говорит о том, что страница была перемещена на новый адрес.
^razdel(/[^/]+)(?:/([^/]+))?(?:/([^/]+))?$