Mixalko

Рейтинг
62
Регистрация
23.08.2012
eklips007:
А если использовать rel canonical? Мне кажется в данном случае для ТС это будет наименее затратный вариант

Спасибо. Интересный совет, пойду делать, посмотрю потом что получится.

А какие варианты редиректы пробовал?

Подскажите ещё насчёт слеша на конце урла. Как его убрать.

Со всех страниц убрал index.php, теперь ссылки выглядят так: site.ru/?id=pade...

Но появилась другая проблема, когда запускаю сделать карту сайта много ссылок появляется со слешем на конце: <a href="http://site.ru/?id=pade/">Страница не найдена</a>. Но самое интересное когда проверяю на денвере там всё в порядке страницы без слеша.

MNERU:
Если я правильно понимаю, то такой реврайт, как вы хотите не будет работать. Всякий запрос должен быть обработан каким-то скриптом. Если с "/index.php" он будет реврайтить запросы на "/", то каким скриптом будет обработан этот запрос.

Это получится сделать, если использовать какой-нибудь энджинкс в качестве фронтенда и на энджинксе реврайтить с "/index.php" на "/", а на апаче уже обрабатывать этот запрос. В противном случае будет циклический редирект.

А если я поставлю один из этих редиректов на страницы с site.ru/index.php?id=pade на site.ru/?id=pade, то дубли уйдут?

Есть много дублей страниц типа:

site.ru/index.php?id=pade...

site.ru/?id=pade...

Редиректы:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php

RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

-------------------

RewriteCond %{THE_REQUEST} ^.*/index.php

RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1 [R=301,L]

они перенаправляют с http://site.ru/index.php?id=pade... на http://site.ru/?id=pade...

А надо чтоб было наоборот: http://site.ru/?id=pade... на http://site.ru/index.php?id=pade...

Подскажите такой редирект.

Onecontent:
Все копают htaccess и никто не сказал что в robots закрыть от индексирования страницы с параметром "?"

Выглядит так:
Disallow: /*?*

А конфликта не получится, ведь в урл присутствует этот знак.

---------- Добавлено 24.08.2016 в 18:58 ----------

miketomlin:
Может, они в таком виде прописались в карте. Проверьте. Если мое предположение верно, исправьте.

На сайте не нашёл. но если прописались только в карте тогда мне создались проблемы с Sitemap. Раньше такого не было. Можете что-нибудь подсказать? А то если в Sitemap нашлось, то могут и поисковики найти.

Попробовал несколько вариантов удалить завершающий слэш через .htaccess, но пока ни чего не помогло.

miketomlin:
Если на страницах сайта есть ссылки, содержащие index.php, удалите, т.е. чтобы ссылки были такого плана: /?id=page

Всё переделал, вроде работает, но сделав Sitemap появилось много ссылок (site.ru/?id=pade/) со слешем на конце, а с ними у меня выдаёт ошибку 404.

miketomlin:
У вас ранее использовался редирект с /index.php на /. Не надо тут ничего ломать. Просто расширьте это поведение и на параметры (ссылки с index.php уберите со страниц сайта, иначе вы сами себе противоречите). Как, написал выше.

Спасибо, вроде разобрался. На денвере протестировал всё вроде работает нормально. Пошёл на хостинге переделывать.

miketomlin:
У вас ранее использовался редирект с /index.php на /. Не надо тут ничего ломать. Просто расширьте это поведение и на параметры (ссылки с index.php уберите со страниц сайта, иначе вы сами себе противоречите). Как, написал выше.

Уточните где убрать index.php?

Здесь site.ru/index.php или здесь site.ru/index.php?id=pade

miketomlin:
nikonlay, зачем $1? Он тут вообще не катит. Это у ТС-а есть:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Только почему ТС говорит, что «http://site.ru/index.php - это нормальная», когда нормальная – это /, я не знаю.

---------- Добавлено 23.08.2016 в 18:48 ----------

Mixalko, уберите довесок \ HTTP/ в конце первой строки.

---------- Добавлено 23.08.2016 в 18:53 ----------

Если «в поиске появилось много страниц», то адресацию теперь уже лучше не трогать. Нужно было раньше думать. Теперь только так или редирект.

1. У меня уже стоит код:

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.site.ru [NC]

RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

это ведь 301 редирект с index.php на главную и убирает слеш в конце на главной.

3. Подскажите как тогда сделать редирект с site.ru/?id=pade на site.ru/index.php?id=pade

2. довесок \ HTTP/ убрал в верху урл стал выглядеть site.ru/?id=pade, а на странице при наведении на ссылку site.ru/index.php?id=pade - поисковики такое не воспримут за дубли?

И ещё, ввёл адрес так site.ru/?=pade и он тоже есть. А здесь какой редирект должен быть?

Всего: 64