Что получат пользователи в браузере, если они найдут где-то в Интернете старую ссылку на страницу старых сайтов и перейдут по этой ссылке, хотя это уже новый сайт, а старой страницы, на которую ведет ссылка, не существует?
Они получат 404 Not Found.
Как сделать редирект или что-то из этих старых ссылок, если старые страницы не открываются в корень домена?
Вам нужно будет создать редирект 301 с каждой старой страницы на эквивалентную новую страницу. Вы можете сделать это с помощью mod_alias:
RedirectMatch 301 ^/old_page/(.*)$ /new_page/$1
или мод_переписать:
RewriteRule ^old_page/(.*)$ /new_page/$1 [L,R=301]
Вам, очевидно, потребуется адаптировать соответствующие выражения и цели к вашим конкретным потребностям. Если у вас есть много отдельных URL-адресов, которые необходимо перенаправить, вы можете рассмотреть возможность создания Переписать карту.
А как быть в таком случае с Google, как не потерять PR и перенаправить этот PR вес старых страниц на основной домен?
Пока вы используете перенаправление 301 (постоянное перенаправление, а не временное перенаправление 302), ранжирование страницы Google будет перенесено на новый URL-адрес.
Что лучше использовать в данной ситуации mod_alias или mod_rewrite и почему?
Любой из них хорош, но mod_rewrite дает вам гораздо больше возможностей и позволяет переписывать карты. Но если вы делаете что-то простое, mod_alias подойдет.
Опять то же самое с 301 и 302 что здесь лучше использовать?
Вы хотите 301 здесь. Это означает, что «запрошенный вами ресурс навсегда перемещен ЗДЕСЬ», а не 302, что означает «запрошенный вами ресурс сейчас отсутствует, но тем временем вы можете найти это здесь". Кроме того, Google не перенесет какой-либо рейтинг страницы на новую страницу, если вы сделаете только перенаправление 302, поскольку оно предназначено только для временных перенаправлений. Не тогда, когда страница навсегда переехала на новый URL.
И последнее, что я только что просмотрел на старых страницах, они все похожи на domain.tld/index.php?id=77. Правильно ли это правило RewriteRule ^index.php?id=(*)$ / [L,R=301]
в этом случае для любого номера идентификатора root?
Это правило не сработает. Вы не можете сопоставить строку запроса (часть ?id=) в RewriteRule
, только %{QUERY_STRING} var in a
RewriteCond. Also
(*)`, вероятно, не то, что вам нужно.
Это 301 перенаправит любой запрос на /index.php?id=N
, где N — любое число, в корень документа.
RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteRule ^index.php$ / [L,R=301]
person
Jon Lin
schedule
17.08.2012