Выгодная регистрация доменов
ХОСТИНГ AGAVA.RU
Каждому клиенту домен .ru,
.com, .net, .org бесплатно.
Выбор домена:

Планы хостинга:
Lite, 1 Gb, Email 150 руб.
Normal, 2 Gb, Email, Perl,
PHP, MySQL
270 руб.
Регулярные выражения
Красивые шаблоны для сайтов
Дизайн - верстка

Обязательное SEO - перенаправляем все на http://www.site.ru/

Обязательное SEO - перенаправляем все на http://www.site.ru/ - это необходимо каждому более - менее серьезному сайту. Важно знать, что у сайта который доступен по нескольким адресам таким как :

  • http://www.site.ru/
  • http://www.site.ru/index.php (html)
  • http://site.ru/
  • http://site.ru/index.php (html)

Впоследствии могут быть проблемы, связанные с песимизацией вашего сайта поисковиками, по причине дублирования контента, да и конкуренты могут накупить или расставить ссылок на разные адреса, казалось бы одного сайта и даже одной страницы! Конечно эти вещи необходимо делать перед публикацией ( открытием ) сайта, но все же лишним устранить проблему с канонизацией ссылок, никогда не поздно! В данном примере рассматривается способ склейки работающий на серверах Apache с включенным mod_rewrite, который будет включен на всех нормальных хостингах! Так как к файлу настройки самого Apache httpd.conf на реальном хостинге вам не дадут, склейку будем осуществлять при помощи файла .htaccess, позволяющий управлять разрешенными хостерами настройками сервера Apache.

Решением проблемы :

  • 1 - Идем на сервер
  • 2 - Ищем в корневой директории сайта волшебный файл .htaccess, если файла нет - создаем!
  • 3 - Открываем файл .htaccess и пишем приведенный ниже код.

Важно : проверяя любые телодвижения с mod_rewrite ОБЯЗАТЕЛЬНО ЧИСТИТЕ КЕШ БРАУЗЕРА после внесения изменений в файл .htaccess!

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^ваш-site\.ru
RewriteRule ^(.*)$ http://www.ваш-site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
Rewriterule ^(.*)index\.(php|html?)$ $1 [R=301,L]

Итак, кому нужен был рабочий пример склейки по 301 - му редиректу копируйте, и используйте, заменив слова ваш-site.ru на соответственно ваш реальный адрес сайта, тем же кто хочет повникать, что это за каракули и как они работают - читаем дальше!

По порядку :

  • RewriteEngine On - включает систему перезаписи URL

  • RewriteBase / - указываем папку в которой находится сайт, в данном случае корневая папка

  • RewriteCond %{HTTP_HOST} ^super-site\.su и RewriteRule ^(.*)$ http://www.super-site.ru/$1 [R=301,L] - Это команды модуля mod_rewrite. RewriteCond - команда, которая формирует условие накладываемое на следующую после нее команду - RewriteRule. В данном случае происходит проверка по какому адресу обратились к сайту и если этот адрес : ваш-site.ru без www то задействуется команда RewriteRule на адрес сайта с www по 301 - му редиректу. Для того, чтобы гарантировать правильность обработки URL используется флаг L - означающий предотвращение последующих за ним правил перезаписи.

  • RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP и Rewriterule ^(.*)index\.(php|html?)$ $1 [R=301,L] - Работает аналогично описанным выше командам, за исключением того, что теперь проверка происходит, что идет после знака / и если там есть index.php или index.html - то перезаписываем на / .

Выше были описаны команды (дерективы) модуля mod_rewrite и, что они делают. Это не так сложно для понимания. Немного непонятным могут показаться: %{HTTP_HOST} и %{THE_REQUEST} - это серверные переменные и различные символы $*.^ - это регурярные выражения, ниже приведена таблица символов регулярных выражений и их значения использумых в данном примере. Для лучшего понимания можете почитать : Что такое регулярные выражения? у нас на сайте или на wikipedia.org.

символзначение
^
Означает начало строки.
.
Означает один любой символ. Это может быть любая цифра, любая буква, любой пробельный символ или другой знак.
*
Означает ноль или более повторений предшествующего символа.
$
Означает конец строки.
( )
Используется для составления более сложных выражений, значение внутри () - аналогично переменной, и к полученным в результате комбинирования выражению могут быть применены другие символы такие как : ? или *.
\
Используется для включения служебных символов в подстоку поиска.
|
Используется для предоставления албтернативного варианта ( или | или ), но только один из вариантов.
 


Поиск
Полезности о JAVASCRIPT