#php #.htaccess #mod-rewrite
#php #.htaccess #mod-перезапись
Вопрос:
Я заметил, что Google индексирует мои страницы с переменными в URL, а другие страницы без них. На этих других страницах нет переменных, и они отлично индексируются без расширения php.
Например:
mydomain.com/page.php?name=flinstones
мой htaccess переписывает это в:
mydomain.com/flinstones
Но он по-прежнему отображается как первый в поиске Google и Google Analytics.
Есть ли способ заставить его показывать / просматривать только красивые URL-адреса?
Вот мой код .. первая часть работает, но перенаправление не работает. Как мне заставить это работать?
RewriteEngine On
RewriteRule ^([^/.] )/?$ page.php?name=$1 [L]
RewriteRule ^page.php?name=([^/.] )/?$ /$1 [R=301,L]
Спасибо,
Ответ №1:
Да, вы можете указать Google, какая каноническая ссылка предназначена для страницы.
<link rel="canonical" href="http://mydomain.com/flinstones" />
Комментарии:
1. Будет ли это иметь преимущество перед 301 перенаправлением или лучше использовать оба?
2. Это и перенаправление 301 будут иметь аналогичные результаты. У каждого есть свои преимущества. Canonical будет перехватывать URL-адреса, о существовании которых вы и не подозревали. 301s физически перенаправит пользователя (чтобы он видел хороший URL) и может иметь лучшие результаты для поисковых систем, отличных от Google. В конечном счете, вы могли бы использовать оба.
3. Спасибо! Я бы хотел, чтобы сначала заработал мой 301 редирект. 🙂
Ответ №2:
Да, никогда не заставляйте Google видеть уродливую ссылку! В вашем php / html-коде всегда используйте только его приятную форму. Тогда у Google нет шансов 🙂
Комментарии:
1. И вы можете подумать о создании 301 перенаправления, которые перенаправляют индексированные плохие URL-адреса на красивые URL-адреса. Таким образом, вы можете сохранить pagerank для ваших уже проиндексированных страниц, удалив их из индекса Google.
2. @Jan-Henk, да, хорошая заметка! Думаю, при обычном перенаправлении ему пришлось бы ждать дольше.
3. Да, конечно, я использую только красивые URL-адреса для своих ссылок на сайте. Это так же просто, как добавление
[R=301,L]
к моему правилуRewriteRule ^([^/.] )/?$ page.php?name=$1 [L]
, и это должно это исправить?4. @checkenginelight, НЕТ! Это правило, которое делает уродливый URL для вас, но он должен быть только внутренним. Вам нужно добавить новое правило, которое переписывает уродливый URL на хороший, и это правило будет использовать
R=301
атрибут.5. Не могли бы вы привести пример того, каким должно быть новое правило?
Ответ №3:
Mod rewrite означает: Если запрос страницы происходит с этой формой ‘xxxxx’
, управляйте им так, как это было ‘гггг’
, И сообщайте что-либо запрашивающему.
Итак, в вашем случае Google считает, что оба URL-адреса действительны (и дублируются), ой!
Для вашего случая используйте a 301 redirect
, что означает: ‘xxxxx’ не является допустимым запросом (или устарел), пожалуйста, запрашивающий (Google или любой другой) использует вставку ‘гггг’. тогда ‘xxxxx’ скоро будет забыт.
С другой стороны, это правильно для mod rewrite
вашего противоположного случая:
mydomain.com/flinstones переписано на:
mydomain.com/page.php?name=flinstones
соблюдать правила SEO и позволить php управлять запросом.