Старые URL'ы в Яндексе. Как изменить?

Злыдень
На сайте с 14.01.2003
Offline
114
551

Не знал как тему обозвать... Может немного не точно...

Суть в чем, когда то на сайте была сделана менюха, которая строилась самим движком (рукописный). Были кнопки + и - (как в виндовом проводнике у обычных папочек). Так вот, Яндекс в свое время проиндексил все это и во всех урлах сайта появился дополнительный параметр, типа index.php?cat=5&p=12. Вот это p=12 было именно параметром, исходя из которого строилось некое меню.

От того меню я отказался уже давно, и сделал выпадающее на джаве. А обычное текстовое внизу, без всяких уже p=12. Но Яндекс упорно считает что у меня есть этот параметр...

Вот как можно сказать роботу, что нет у меня более таких адресов? то есть все адреса как и прежде (в смысле cat=5 и т.д.) но больше никаких параметров нет?

И еще. На главную страницу сайта можно попасть в принципе двумя путями.

То есть два адреса получается.

просто www.my_site.ru/index.php и www.my_site.ru/index.php?cat=2 это одно и тоже.

Ну то есть Главная страница у меня в базе раздел, с id=2. В итоге в index.php идет обработка, мол если cat пришел пустой, то он равен 2. Одно время на сайте засветилась такая ссылка, и Яндекс ее скушал и теперь считает что она главная, а не просто Index.php , вот как вернуть теперь обратно? Ведь www.my_site.ru/index.php?cat=2 тоже рабочий и тоже главная... Запутался блин... Ну то есть как сказать яндексу ходить на www.my_site.ru/index.php а не на какую другую ссылку....

Куплю ссылки с ресурсов тематика Строительство (Желательно ЯК).
Коля Дубр
На сайте с 02.03.2005
Offline
153
#1

3 варианта:

1) работать с robots.txt, но тут вроде не подходит

2) работать с .htaccess, через mod_rewrite отдавать редирект или 404, если в адресе лишние параметры

3) (я бы так и сдела, самое простое) - добавить в начало кода:


<?
if (isset($_GET['p'])) {
header("Location: index.php?cat=".$_GET['cat']);
// или header("HTTP 1/0 404 Not Found") или еще что-то в таком духе
else {
// отдать все что надо
}
?>

Ну, разумеется, убрать все лишние параметры из внутренних ссылок, и, если возможно, из внешних.

А вообще, лучше сразу делать на mod_rewrite, тогда таких проблем обычно не возникает (правда, возникают другие =)).

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
Злыдень
На сайте с 14.01.2003
Offline
114
#2

ммм... а не будете так любезны прокомментировать свой код... ну малость недопонял... я $_GET не использовал никогда...

Интересуют комментарии ко второй и третьей строчке кода... Не сочтите за труд...

Коля Дубр
На сайте с 02.03.2005
Offline
153
#3

$_GET - суперглобальный массив, хранящий данные, переданные методом GET. Параметр p=234 - как раз передается методом GET, и доступен из этого массива. Проверяем, если он установлен, надо перенаправить юзер-агента на такую же страницу, но без него. Для этого используем

header("Location: index.php?cat=".$_GET['cat']);

Так же как $_GET['cat'] нужно передать все параметры, чтоб отправить пользователя ровно туда, куда надо. Еще неплохо бы отдать 301 Moved permanently, т.е. страница перемещена постоянно, чтоб яндекс понял, что по старому адресу страницы больше не существует.

Вообще-то это самые основы, так что внимательнее читайте мануалы, и будет вам счастье.

Злыдень
На сайте с 14.01.2003
Offline
114
#4

спасибо большое.

Очень подробно.

Мануалы читаю, просто не сталкивался пока с этим... А знать все невозможно...

Спасибо еще раз.

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