Я новичок в 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