301 редирект или robots.txt

12
S
На сайте с 10.08.2006
Offline
115
1426

Всем доброго времени.

Поменял на сайте ссылки на псевдостатические, нужно убрать дубли из индекса.

Как с помощью mod rewrite сделать перенаправление с site.ru/index.php?id=12345 на site.ru/set/12345.html или же запретить индексацию урлов вида site.ru/index.php?id=XXX, но при этом не запрещая индексацию урлов site.ru/index.php?idsec=XXX (не уверен, что это возможно)

Спасибо.

AN
На сайте с 31.07.2006
Offline
58
#1
Shadow:
Всем доброго времени.
Поменял на сайте ссылки на псевдостатические, нужно убрать дубли из индекса.
Как с помощью mod rewrite сделать перенаправление с site.ru/index.php?id=12345 на site.ru/set/12345.html или же запретить индексацию урлов вида site.ru/index.php?id=XXX, но при этом не запрещая индексацию урлов site.ru/index.php?idsec=XXX (не уверен, что это возможно)
Спасибо.

по-моему так. не тестил.

RewriteEngine on

RewriteRule ^index.php?id=([0-9]+)$ set/$1.html [R=301,L]
S
На сайте с 10.08.2006
Offline
115
#2

таким образом не хочет работать

Shtogrin
На сайте с 02.11.2006
Offline
95
#3
Anton N:
по-моему так. не тестил.
RewriteEngine on
RewriteRule ^index.php?id=([0-9]+)$ set/$1.html [R=301,L]

Если надо адрес с "?" в другой, то надо делать через RewriteCond ${QUERY_STRING}. Но в этом случае, мне кажется, надо наоборот: виртуальный адрес site.ru/set/12345.html перенаправить на реальный site.ru/index.php?id=12345

RewriteRule ^set/([0-9]+).html$ /index.php?id=$1 [R=301,L]

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
S
На сайте с 10.08.2006
Offline
115
#4
Shtogrin:
Если надо адрес с "?" в другой, то надо делать через RewriteCond ${QUERY_STRING}. Но в этом случае, мне кажется, надо наоборот: виртуальный адрес site.ru/set/12345.html перенаправить на реальный site.ru/index.php?id=12345

RewriteRule ^set/([0-9]+).html$ /index.php?id=$1 [R=301,L]

>>RewriteRule ^set/([0-9]+).html$ /index.php?id=$1 [R=301,L] - это есть

RewriteRule ^set/([0-9]*).html$ index.php?id=$1 [L]

но в таком случае страница будет доступна как по адресу set/123.html так и index.php?id=123 - я хочу отправлять пользователя\бота с index.php?id=123 на set/123.html

AN
На сайте с 31.07.2006
Offline
58
#5

понял. ситуация забавная получается

при запросе set/123.html надо сделать реврайт на index.php?id=123, а оттуда направить пользователя на set/123.html

Shtogrin
На сайте с 02.11.2006
Offline
95
#6

RewriteCond ${QUERY_STRING} ^id=([0-9]+)$

RewriteRule index.php /set/%1.html? [R=301,L]

Внимательно вставляйте правила, чтобы не зациклить Rewrite. Не вижу вашего файла целиком.

Shtogrin
На сайте с 02.11.2006
Offline
95
#7
Anton N:
понял. ситуация забавная получается
при запросе set/123.html надо сделать реврайт на index.php?id=123, а оттуда направить пользователя на set/123.html

Не оттуда, а если набрали напрямую адрес. Посмотрите переменную $_SERVER при разных адресах и вставьте редирект в index.php, если не было реврайта. Там будет специальная переменная (REDIRECT_URL ???). Так будет логичнее, чем рисовать циклы для реврайта

S
На сайте с 10.08.2006
Offline
115
#8
Shtogrin:
RewriteCond ${QUERY_STRING} ^id=([0-9]+)$
RewriteRule index.php /set/%1.html? [R=301,L]

Внимательно вставляйте правила, чтобы не зациклить Rewrite. Не вижу вашего файла целиком.

начало файла:

RewriteEngine on

RewriteCond ${QUERY_STRING} ^id=([0-9]+)$

RewriteRule index.php /set/%1.html? [R=301,L]

набираю в строке адреса site.ru/index.php?id=121710 - и ничего не происходит

Shtogrin
На сайте с 02.11.2006
Offline
95
#9

Должно работать. Может страница в кєше, может есть обработчик 404 (/set/12345.html сейчас нет, если .htaccess полный), попробуйте, RewriteRule ^/index.php$ . Какая версия apache?

S
На сайте с 10.08.2006
Offline
115
#10
Shtogrin:
Должно работать. Может страница в кєше, может есть обработчик 404 (/set/12345.html сейчас нет, если .htaccess полный), попробуйте, RewriteRule ^/index.php$ . Какая версия apache?

Версия Apache 1.3.37 (Unix)

попробовай на другом хосте - работает, но перенапрявляет на set/.html - т.е. id теряется.

попробую у хостера спросить ещё.

12

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