До этого времени, у меня был форум на forum.domain.com сейчас переношу форум на главный домен, и нужно сделать это с минимум негативных последствий. что бы индексирование в поисковиках восстановилось быстро, что бы пользователям не было проблем вернуться на форум, что бы человек который придёт через старые запросы с поисковика, смог сразу попасть на главную страницу сайта. а так же функциональность Php/mysql и т.д. про редиректы ничего не знаю, есть какие то mod_rewrite, htaccess и т.д. либо проще перенести форум на поддомене создать Index файл с объявлением "мы поднялись уровнем выше - линк"?
1. mod_rewrite Options +FollowSymLinks RewriteEngine on RewriteCond {HTTP_HOST} ^yourdomain.com RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=permanent,L] Дописать в файл .htaccess 2. Apache Redirect Redirect 301 / http://www.yourdomain.com/ Дописать все в тот же файл .htaccess 3. PHP header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://www.newdomain.com/newdir/newpage.htm”); exit(); http://www.highrankings.com/forum/index.php?showtopic=5644 (c) full article
Спасибо, Solker Попробовал вышеприведённый вариант, а так же пересмотрел другие способы в google, "собрал", то, что работает и редиректит поддомен на основной: Но теперь проблема в том, когда я пытаюсь добавить ещё один RewriteCond для редиректа на http://www.ugex.ru с сайта http://ugex.ru Пытался добавить ещё одну строку RewritCond, но вместо forum пишу www, и почему то редирект пропадает вообще, как с http://forum.ugex.ru, так и с http://ugex.ru P.s. - прочитал что два RewriteCond - допустимо.
301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код "301" интерпретируется как постоянное перемещение ("moved permanently"). Простой редирект (в файле .htaccess или httpd.conf для Apache): PHP: Redirect 301 / http://www.you.com/new.htm где: Redirect 301 - это инструкция, говорящая что страница перемещена / - означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано http://www.you.com/new.htm - новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт). Чтобы переадресовать только страницу, сохранив PR старой страницы: PHP: Redirect 301 /old/old.htm http://www.you.com/new.htm где: /old/old.htm - путь и имя старой страницы Аналогичный синтаксис для переадресации сайта: PHP: RedirectPermanent / http://www.you.com/ Пример переадресации каталога: PHP: RedirectPermanent /old-directory http://www.domain.com/new-directory/ Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен): PHP: Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/ Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа. Использование mod_rewrite (прописывается в файле .htaccess): Ставшая классической задача слияния имена сайта с www и без него, решается так: PHP: Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^yoursite\.com RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] . или альтернативный синтаксис: PHP: Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L). Редирект старого домена на новый: PHP: Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess: PHP: RewriteEngine on RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html [R=permanent] Для замены всех .htm файлов .html файлами: PHP: RewriteEngine on RewriteBase / RewriteRule ^(.*)\.htm$ $1.html [R=permanent] Редирект на PHP: PHP: <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?> Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта. Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова: PHP: <? $ref=$_SERVER['QUERY_STRING']; if ($ref!='') $ref='?'.$ref; header('HTTP/1.1 301 Moved Permanently'); header('Location: http://newdomain.com/'.$ref); exit(); ?>
Спасибо, suser. Я читал несколько подобных статей. У меня немного другая ситуация. Выше перечисленные примеры - глючат.