Не знал куда написать Суть проблемы: Была структура сайта типа: www.site.ru/page.php Теперь структура такая: www.site.ru/index.php?page=page Как сделать так, чтобы при поиске сайта по старым ссылкам посетителя перенаправляло на новую аналогичную страничку? И что нужно сделать чтобы не пропасть из поиска у поисковиков. Идея прописать что-то в файле Robots.txt
Вот нашел в интернете Перенаправление несуществующих URL на другой веб-сервер Описание: Типичный часто задаваемый вопрос по URL преобразованиям — это как перенаправить несуществующие запросы с сервера А на сервер B. Обычно это делается через ErrorDocument CGI-скрипты на Perl, однако с модулем mod_rewrite тоже есть решение. Заметьте однако, что это менее ресурсоёмко чем использвание ErrorDocument CGI-скрипта! Решение: Первое решение имеет лучшую производительность однако меньшую гибкость и меньшую защиту от ошибок: PHP: RewriteEngine on RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f RewriteRule ^(.+) [url=http://webserverB.dom/$1]http://webserverB.dom/$1[/url] Проблема здесь в том, что это будет работать только для страниц находяшихся внутри DocumentRoot . Тогда как вы можете добавить больше условий (например ещё и для управления домашними каталогами, и т.д.) есть лучший вариант: PHP: RewriteEngine on RewriteCond %{REQUEST_URI} !-U RewriteRule ^(.+) [url=http://webserverB.dom/$1]http://webserverB.dom/$1[/url] Здесь используется особенность mod_rewrite — URL look-ahead(смотреть вперед). В результате это будет работать для всех типов URL и к тому же это безопасно. Однако это снижает производительность веб-сервера, потому что для каждого запроса производится более одного внутреннего подзапроса. Поэтому, если ваш веб-сервер имеет мощный процессор, используйте этот вариант. Если это медленная машина, используйте первый или лучше ErrorDocument CGI-скрипта.
у меня вот такой .htaccess Код (Text): <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?$1 [L,QSA] </IfModule> дальше все идет в index.php в нем я делаю так $url = parse_url( $CFG_STRINGS['site_url'].$_SERVER['REQUEST_URI'] ); ну и дальше пляшем. Если такой страницы не найдено - ты можешь проверить урл, и если он подпадает под вид старого способа - перенаправить на нужную страницу. Вот и все.
Возвратившись к этому вопросу, накопал в инете такую статью: От старого с новому (внешнее) Описание: Снова предположим что мы недавно переименовали страницу bar.html в foo.html и хотим сейчас для обратной совместимости сделать доступным и старый URL. Однако, в этот раз мы хотимчтобы пользователи использующие старый URL узнали этот новый URL, т.е. адресная строка их браузеров также должна измениться. Решение: Мы используем HTTP редирект на новый URL который приведет к к изменениям в браузерах(в адресной строке) и таким образом это видят пользователи: Код (Text): RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo\.html$ bar.html [R] Но никак не пойму как работает RewriteBase, находил описание в инете, но все равно не понял Кто знает как она работает?