Практика использования редиректа для склейки страниц и домена.

SEO и контекстная реклама

Так это всё была теория так сказать, теперь практика. Когда я только создавал сайт, он к сожалению был статическим. То есть на html были только страницы, потом по мере того как я научился применять php и mysql, я перевел часть сайта на пхп. Но оставалась такая проблема, большая часть трафика шла на статические странички. Надо было это как то исправлять, так как очень хотел перевести его полностью на пхп, и навести лоск. Начал активно вникать в тему редиректа. Плюс я обнаружил что часть моих ВС идёт на домен с www, а часть на домен www, да и вообще говорят что склеивать их нужно чтоб поисковики не различали их. Ведь раз они их различают то и всякий ТИЦ и пр + ссылки тоже делятся. А нам этого не надо.


Задача: склеить домены с www и без www, для этого заюзаем mod_rewrite в .htaccess. Затем занесём в БД старые-новые странички и через стандартный редирект перенаправим всё на них!

Первым делом я занялся редиректом старых страниц на html, на новые адреса этих страниц. Для этого занес все старые страницы в mysql, они получили новый url. На который я в последствии и перенаправлял запросы.

Для того чтобы перенаправить запросы, надо было в файле .htaccess кой чё дописать. Но для начала надо было этот файл найти). Я долго и отчаянно его искал у себя на хостинге, но так и не нашёл. Кстати, его можно увидеть зачастую только при ftp доступе, из directadmin и т.п. систем управления сайтом этот файл не видно. Так вот файл то я не нашёл ... поэтому пришлось его создавать самому. 

Создавать его надлежит в том же каталоге, в каком находятся файлы при обращении к которым необходимо осуществить редирект. Вообще файл .htaccess может находится в нескольких каталогах, веб сервер учитывает только последний из них. Скажем у вас 2 этих файла, один лежит в /, а другой в /articles/. Так вот если страничка лежит в первом каталоге, то и перенаправляться она будет по правилам описанным в файле из этого каталога. Тогда как во втором случае, файл .htaccess находящийся в корневом каталоге / будет проигнорирован, так как в каталоге /articles/ имеется собственный файл  .htaccess, по которому и будет произведено перенаправление. 

Так как у меня исходные файлы находились в корне, то в моём файле  .htaccess в корневом каталоге появились следующие записи:

redirect 301 /blabla.html http://www.mysite.ru/newblabla.php?id=1

И всё стало чудесно перенаправляться, ввожу старый url в браузер, у меня всё перенаправляется на новый.

Единственная проблема, когда я создал первый файл .htaccess, я забыл поставить . вначале его))) И из за этого он у меня не работал, сабака. Когда всё исправил, всё заработало на ура! Вот ещё что, чтобы проверить работает у вас этот файлик и всё что в нём написано, сохраните внутри его чтонить непотребное (типа этого -ывгларлыаолы). Если при обращения к страницам вашего сайта с этим файлом будет выдавать ошибку - значит файлег этот работает!

Следующий этап, клеим с www и без www, так же и www с index и без www с index. То есть

www.mysite.ru

www.mysite.ru/index.php

mysite.ru

mysite.ru/index.php

Ведь поидее это 4 разных страницы могут быть. Нам же надо что бы всё интерпретировалось как  www.mysite.ru. Для этого открываем уже созданный файлик .htaccess и добавляем туда следующий код:

 

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.ru
RewriteRule (.*) http://www.mysite.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.mysite.ru/ [R=301,L]

 

У меня всё заработало! Единственное какая была проблема, у меня же раньше был главный файл index.html  а сейчас я сделал index.php. Я что бы это организовать добавил ещё одну строку редиректа

 

 redirect 301 /index.html http://www.mysite.ru/index.php

 

В плане склейки адресов с www и без, можно использовать и такую запись. На ней я собственно и остановился для себя.

  Options +FollowSymLinks

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^mysite.ru
  RewriteRule (.*) http://www.mysite.ru/$1 [R=301,L]

  Дабы убедится что всё теперь норм лезим сюда и проверяем. Вводим урл сайта без www, в результате надо получить примерно следующее:

#1 Server Response: http://mysite.ru
HTTP Status Code: HTTP/1.1 301 Moved Permanently

Server: nginx/0.8.7
Date: Mon, 25 Jan 2010 07:21:57 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mysite.ru/
Content-Length: 296
Redirect Target: http://www.mysite.ru/
#2 Server Response: http://www.mysite.ru/
HTTP Status Code: HTTP/1.1 200 OK

Server: nginx/0.8.7
Date: Mon, 25 Jan 2010 07:21:57 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.2.10
Vary: Accept-Encoding,User-Agent

Если у вас такое же всё, особенно та часть что выделена жирным - то всё отлично, в противном случае мучаемся дальше. 

 

 

 

 

Комментарии  

 
#5 Гость 19.02.2011 05:14
Как сделать редирект со всех страниц старого домена на главную страницу нового домена, через .htaccess :cry:

Побывал так:
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^domail1\.ru$ [NC]
RewriteRule ^.*$ http://domail2.ru/ [R=301,L]

Но остается мусор, например:
http://domail1.ru/index.php?id=12312321&s=sadkfgawefc
редиректит на
http://domail2.ru/?id=12312321&s=sadkfgawefc

:sigh: Как избавится от ?id=12312321&s=sadkfgawefc ?
Помогите пожалуйста.
Цитировать
 
 
#4 avadon7 26.10.2010 11:03
Цитирую Job:
А как настроить редирект в Direcadmin?


Наверно можно и в DirectAdmin'e это как то сделать. К сожалению, нету возможности порыться в данной панели управления хостингом. Да и статья как бы не об этом ...
Цитировать
 
 
#3 Гость 21.10.2010 00:42
А как настроить редирект в Direcadmin?
Цитировать
 
 
#2 avadon7 12.08.2010 11:08
Цитирую garumna:
У меня такая же ситуация, целых 4 главные страницы

ну так сделайте, как я описали будет вам счастье)
Цитировать
 
 
#1 Гость 09.05.2010 18:47
У меня такая же ситуация, целых 4 главные страницы
Цитировать