Googelbot находит мой исходный URI, хотя у меня есть рабочая директива перезаписи [closed]

У меня:

RewriteRule ^Article/([^/]*)$ /article.php?newsid=$1 [L]

Это означает, что URL-адрес должен быть // example.com/Article/855563 , но Google сканирует // example.com/article. php? newsid = 855563 . Что я могу сделать, чтобы предотвратить это? Или перенаправить 301 на example.com/Article/855563 ?

-2
задан 15 March 2019 в 01:43
1 ответ

Сначала вам нужно определить, почему Google сканирует неправильные URL-адреса.

  • Изменили ли вы существующую структуру URL-адресов (которая была проиндексирована поисковыми системами и связана с внешними ссылками)? В этом случае вам нужно было бы реализовать перенаправление со старого URL-адреса на новый, чтобы сохранить SEO и заставить поисковые системы заменять старые URL-адреса в результатах поиска.

  • Вы случайно ссылаетесь на неправильный URL-адрес (s ) внутренне и выставляя "неправильные" URL-адреса поисковым системам? Если это так, эти должны быть исправлены до реализации перенаправления.

В противном случае Google не смог бы обнаружить «неправильные» URL-адреса.

Вы также должны быть внедрение тега rel = "canonical" в заголовке ваших страниц, чтобы указать правильный канонический URL-адрес для поисковых систем.

Для внешнего перенаправления URL-адреса формы /article.php ? newsid = в / Article / (канонический URL) - противоположность существующей внутренней перезаписи - тогда вы можете сделать что-то вроде следующего в верхней части файла .htaccess ( до существующей перезаписи):

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^newsid=([^&]*)
RewriteRule ^article\.php$ /Article/%1 [R=302,L]

Первое условие, которое проверяется на соответствие переменной среды REDIRECT_STATUS , необходимо для того, чтобы для предотвращения цикла перенаправления - он гарантирует, что правило обрабатывается только при прямых запросах от клиента, а не перезаписывает запросы (ваша существующая директива) .

Второе условие фиксирует значение параметра URL newsid (которое встречается в начале пути URL). Это сохраняется в обратной ссылке % 1 (используется позже в подстановке RewriteRule ). Обратите внимание, что это захватывает все (как в вашей перезаписи), однако, если значение newsid всегда числовое, тогда это действительно должно быть более ограничительным. например. ^ newsid = (\ d +) (только 1 или более цифр).

Обратите внимание, что в настоящее время это 302 (временное) перенаправление. Измените его на 301 (постоянное) перенаправление только после того, как убедитесь, что он работает нормально, чтобы избежать проблем с кешированием.

1
ответ дан 5 December 2019 в 21:21

Теги

Похожие вопросы