Недавно я завершил проект, в котором переместил довольно большой веб-сайт на красивый, чистый веб-сайт меньшего размера. Это означало, что мне пришлось учитывать большое количество страниц, которые были проиндексированы поисковыми системами, и перенаправлять их соответствующим образом на соответствующую страницу нового веб-сайта, используя 301 Redirects
.
Было более 300 уникальных URL-адресов, все из которых мне пришлось перенаправить. Я использовал apache mod_rewrite
модуль для достижения перенаправления, поскольку большинство URL-адресов содержат GET parameters
который твой стандарт Redirect
заявление не читается.
Так, например, у меня были такие URL-адреса:
https: //olddomain/product.html? prod_id = 143 & id = 234
и такое перенаправление:
RewriteCond %{QUERY_STRING} prod_id=143&id=234$
RewriteRule ^product\.html$ /products/product-a? [L,R=301]
Так было почти со всеми из них. Я предполагаю, что мой вопрос: правильно ли я записал 300 отдельных перенаправлений, как указано выше, или есть более «чистый» способ сделать это? Я слышал, что многие rewrite rules
может замедлить работу сервера.
Буду признателен за ваш вклад в этих ребят, и если это не подходящее место для извинений, я удалю их и опубликую на соответствующем обмене.
Я бы реализовал такого рода перенаправления в самом коде приложения, создав массив с исходными и целевыми URL-адресами, а затем, проверяя, содержит ли URL-адрес параметры в массиве, отправил обратно перенаправление в пункт назначения.
Использование правил перезаписи для этого - немного сложный способ реализовать это.