Как предотвратить дублирование контента с помощью htaccess
Я использую.htaccess для создания чистого URL, но когда я проверил свой сайт example.com/some-request
имеет дублированный контент с xyz.com/product_view.php?category_id=some-request
Я с трудом нахожу, как это исправить, и вот мое правило переписывания:
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z_-]+)$ product_view.php?category_id=$1 [NC,L]
Что может быть лучшим решением для этого?
1 ответ
Решение
Вам необходимо внешне перенаправить запросы наexample.com/product_view.php?category_id=some-request
в xyz.com/some-request
перед твоим внутренним переписыванием.
Попробуйте следующее:
RewriteEngine on
RewriteBase /
# Redirect direct requests for the real URL to your desired URL
RewriteCond %{THE_REQUEST} \?category_id=([^\ ]*)
RewriteRule ^product_view\.php /%1? [R=301,L]
# Existing rewrite to real URL
RewriteRule ^([0-9a-zA-Z_-]+)$ product_view.php?category_id=$1 [NC,L]
Немного в стороне... но это действительно дублирует, только если эти URL индексируются. Если вы всегда ссылались на свой "симпатичный" URL, тогда риск относительно невелик. Этого также можно избежать, установив соответствующий rel="canonical"
link
элемент на ваших страницах.