Как избежать дублирования URL-адресов сопоставления содержимого с помощью htaccess

Я новичок в написании правил htaccess. Я хочу, чтобы URL-адреса на моем сайте были максимально простыми.

Допустим, я хочу "сопоставить" / home / каталог для корневого домена. Таким образом, http://www.domain.com/ будет отображать содержимое из каталога / home / без изменения URL.

Более того, я не хочу, чтобы пользователи / google имели доступ к: http://www.domain.com/home/, поэтому, если кто-то перейдет по этому URL, я хочу перенаправить их обратно в мой корневой домен: http://www.domain.com/.

Я вижу, что Google индексирует обе директории с одинаковым дублированным контентом. http://www.domain.com/ http://www.domain.com/home/

Что я могу сделать, чтобы остановить это? Я не хочу использовать robots.txt, потому что слышал, что это плохая практика.

RewriteEngine on
RewriteBase /

# Redirect /home/ dir to 'www.domain.com'
#RewriteCond %{REQUEST_URI} ^/home/$ [NC]
#RewriteRule ^(.*)$ / [R=301,L]

# Show /home/ dir for 'www.domain.com'
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /home/$1 [L]

Если я включу все строки из этого кода, я получу цикл перенаправления, который никогда не заканчивается.

Кроме того, я сталкиваюсь с той же проблемой при попытке добавить "дружественные к SEO" URL. Я пытаюсь сопоставить " http://www.domain.com/thread/thread-name/" с " http://forum.domain.com/thread-name/", и хотя он работает нормально, я у меня все еще есть 2 дубликата URL, показывающих то же самое содержание.

Я хотел бы услышать лучшую практику, чтобы избежать индексации дублированного контента поисковыми системами. Должен ли я перенаправить его на 404? Я не хочу использовать robots.txt для реализации этого, потому что есть много комбинаций файлов / каталогов, и это не будет работать для моей цели.

Большое спасибо!

1 ответ

Решение

Вместо этого:

# Redirect /home/ dir to 'www.domain.com'
#RewriteCond %{REQUEST_URI} ^/home/$ [NC]
#RewriteRule ^(.*)$ / [R=301,L]

пытаться:

# Redirect /home/ dir to 'www.domain.com'
RewriteCond %{THE_REQUEST} \ /+home/([^\?\ ]*)
RewriteRule ^ /%1 [R=301,L]
Другие вопросы по тегам