Как сделать редирект?

S1
На сайте с 08.05.2013
Offline
27
462

Привет!

Столкнулся с небольшой проблемой на сайте. Часть страниц 2 уровня (страницы категорий) выводятся в поиске следующим образом:

1)http://site.ru/?categoryID=XXX

2)http://site.ru/index.php?categoryID=XXX

То есть имеют место дубли страниц. Ссылки закупаются на страницы вида http://site.ru/index.php?categoryID=XXX.

CMS Shopscript Premium

Подскажите как сделать редирект в htaccess с http://site.ru/?categoryID=XXX на http://site.ru/index.php?categoryID=XXX ???

На данный момент htaccess выглядит так:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.site.ru

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

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

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

AddDefaultCharset WINDOWS-1251

S1
На сайте с 08.05.2013
Offline
27
#1

Неужели никто не сталкивался с таким?

N
На сайте с 23.09.2013
Offline
2
#2

Redirect 301 /?categoryID=XXX /index.php?categoryID=XXX

---------- Добавлено 20.11.2013 в 20:44 ----------

или вот так:

RewriteEngine on
RewriteRule ^?categoryID=([^/\.]+)?$ index.php?categoryID=$1 [L]
Как заработать на подпищиках? (http://1000-k.ru/op/1085) Заработок на блоге. (http://1000-k.ru/op/1084)
S1
На сайте с 08.05.2013
Offline
27
#3
namevvm:
Redirect 301 /?categoryID=XXX /index.php?categoryID=XXX

Не помогло. Ответ сервера 200, как с /?categoryID=XXX, так и с /index.php?categoryID=XXX

---------- Добавлено 20.11.2013 в 22:49 ----------

RewriteEngine on

RewriteRule ^?categoryID=([^/\.]+)?$ index.php?categoryID=$1 [L]

Тоже не помогает, сайт сразу выдает ошибку 500 internal server error...

siv1987
На сайте с 02.04.2009
Offline
427
#4

Добавить после RewriteEngine On

RewriteCond %{QUERY_STRING} !^$

RewriteRule ^$ index.php [R=301,L]

если будут проблемы с потерей параметров при отправке какой-то формы на сайте, которая использует адрес без index.php, !^$ заменить на ^categoryID=

N
На сайте с 23.09.2013
Offline
2
#5

попробуйте так:

RewriteCond %{QUERY_STRING} categoryID=([0-9]+)
RewriteRule ^/$ /index.php?categoryID=$1 [R=301,L]
S1
На сайте с 08.05.2013
Offline
27
#6
siv1987:
Добавить после RewriteEngine On

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^$ index.php [R=301,L]

если будут проблемы с потерей параметров при отправке какой-то формы на сайте, которая использует адрес без index.php, !^$ заменить на ^categoryID=

Очень похоже на правду)

Сервер отдает 301 редирект, но браузер редиректит на сл страницу:

http://site.ru/site.ru(технический домен)/index.php?categoryID=XXX

Подскажите, что нужно докрутить?

---------- Добавлено 21.11.2013 в 01:15 ----------

namevvm:
попробуйте так:

Так тоже не работает....

---------- Добавлено 21.11.2013 в 01:22 ----------

siv1987:
Добавить после RewriteEngine On

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^$ index.php [R=301,L]

если будут проблемы с потерей параметров при отправке какой-то формы на сайте, которая использует адрес без index.php, !^$ заменить на ^categoryID=

Сори, немного неправильно написал.

Редиректит во сюда:

http://site.ru/home/webmaster/www/vpsXXX.vps.tech-logol.ru/htdocs/index.php?categoryID=XXX

siv1987
На сайте с 02.04.2009
Offline
427
#7
skill1900:
Подскажите, что нужно докрутить?

RewriteRule ^$ /index.php [R=301,L]

S1
На сайте с 08.05.2013
Offline
27
#8
siv1987:
RewriteRule ^$ /index.php [R=301,L]

Супер! Все заработало:) Огромное спасибо!!!

---------- Добавлено 21.11.2013 в 13:49 ----------

siv1987:
Добавить после RewriteEngine On

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^$ index.php [R=301,L]

если будут проблемы с потерей параметров при отправке какой-то формы на сайте, которая использует адрес без index.php, !^$ заменить на ^categoryID=

Решил проверить как отрабатывают формы на сайте и обнаружил ошибку с формой "Есть вопрос по ..." в карточках товара. Туда вбивается "Имя", "Эл. почта", "Вопрос".

При нажатии кнопки "Ок" браузер перенаправлял на страницу http://site.ru/#inquiry и не отправлял вопрос на почту.

Но ошибку вызывал не ваш редирект, а который был ранее:

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

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

Убрал его из htaccess и добавил в robots.txt - Disallow: /index.php$

Как вы думаете, это нормальный обход ошибки?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий