Как перенаправить старые "некрасивые" URL-адреса в SEO-дружественные? - PullRequest
1 голос
/ 29 октября 2009

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

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

У этого товара есть раздел (одежда) и название (рубашка). Эти имена и разделы являются уникальными.

В оптимизированном для SEO 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?

Спасибо!

Ответы [ 5 ]

4 голосов
/ 29 октября 2009

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

3 голосов
/ 29 октября 2009

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

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

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

0 голосов
/ 29 октября 2009

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

redirectToSeoUrl();

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

0 голосов
/ 29 октября 2009

Apache? Попробуйте перенаправить .htaccess. Модификатор не требуется.

Пример: Redirect 301 /oldpage.html http://www.example.com/newpage.html

0 голосов
/ 29 октября 2009

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

...