Как перенаправить старые «уродливые» URL-адреса на seo-friendly?

Я новичок в mod_rewrite и мне нужно что-то сделать для своего клиента.

Предположим, у меня есть сайт www.mydomain.com/products.php?prod_id=32.

Этот продукт имеет раздел (одежда) и имя (рубашка). Эти имена и разделы уникальны.

В SEO-Friendly Url это должно быть www.mydomain.com/products/clothes/shirt/.

Я знаю, что могу создать

RewriteRule ^products/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ products.php?section=$1&name=$2 

Я могу это сделать, и это работает. Но я хочу, чтобы люди, которые вошли на сайт www.mydomain.com/products.php?prod_id=32, перенаправлялись на сайт www.mydomain.com/products/clothes/shirt/ (измененный в самом браузере). Как я могу это сделать, не вставляя идентификатор в свой url? Можно ли вызвать «предварительную обработку» php-файла в моем .htaccess и воссоздать «products.php? Section = $ 1 & name = $ 2»?

У любого есть хорошая ссылка с действительно подробным объяснением mod_rewrite?

Благодаря!

У вас может быть большая проблема, чем mod_rewrite может обрабатывать изящно. Вы также можете использовать PHP для перенаправления на браузер. Таким образом, вы можете получить доступ к своей базе данных, чтобы выяснить, что product_id 32 есть / одежда / рубашки /

Я не вижу другого выбора, кроме как делать это внутри PHP.

Вы можете добавить что-то вверху страницы products.php, которая проверяет URL-адрес ( $_SERVER['REQUEST_URI'] ), чтобы увидеть, содержит ли он products.php. Если это так, перенаправите человека. Вам нужно будет запросить вашу базу данных, чтобы узнать категорию продукта и имя перед перенаправлением.

Не забудьте установить заголовок Moved Persently для дальнейшего улучшения SEO 🙂

Эти данные могут передаваться браузером через поле заголовка «Referer». Вы могли бы продвинуть этот URL-адрес и посмотреть на аргументы get. Если я правильно помню, это не поддерживается во всех браузерах.

в верхней части products.php (или любой страницы, которую вы хотите перенаправить), вы можете поместить вызов функции

 redirectToSeoUrl(); 

Затем в одном из ваших файлов include напишите функцию redirectToSeoUrl, которая получит новый URL-адрес и перенаправляет. Обязательно поместите код, прежде чем что-либо будет выводиться в браузер.

Apache? Попробуйте перенаправить .htaccess. Нет необходимости в mod_rewrite.

Пример: перенаправление 301 /oldpage.html http://www.example.com/newpage.html