AmiSEO CMS Полезные основы работы с htaccess и mod_rewrite
Печать PDF

Полезные основы работы с htaccess и mod_rewrite

+ 8
+ 1

В этой статье расскажу как произвести небольшую SEO оптимизацию сайта с помощью настройки модуля mod_rewrite в htaccess.

Для начала ознакомимся с тем, как работает этот mod rewrite. Для этого откройте файл .htaccess и поищите там подобную строку. В Друпале это выглядит так, как показано ниже. В Джумле несколько иначе, но принцип похож.

RewriteEngine on #включить движок Rewrite
RewriteCond %{REQUEST_FILENAME} !-f  #применять RewriteRule, только если запрашиваемое имя файла не совпадает с именем какого-нибудь реального файла на сервере
RewriteCond %{REQUEST_FILENAME} !-d  #и не совпадает с именем какой-нибудь реальной директории
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]  #а вот это правило рассмотрим подробнее ниже

Левая часть: ^(.*)$
Крышка вначале означает начало строки.
Бакс в конце означает конец строки.
Точка в скобочках означает любой символ.
Звездочка после точки означает, что любых символов может быть от нуля до бесконечности.
Скобочки означают группу. Т.к. она первая (и единственная), то эта группа идет под номером 1.

Правая часть: index.php?q=$1
означает, что мы перезаписываем url на index.php?q= и к этому добавляем первую группу $1, т.е. имя запрашиваемого файла.

Флаги [L,QSA]

'last|L' (последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований

'qsappend|QSA' (query string append - добавлять строку запроса)
Приплюсовать то, что идет после знака вопроса. Например, если урла была такая, http://mysite.com/node/1?size=original, то в броузере останется такой-же, но скрипту пойдет в таком виде: http://mysite.com/index.php?q=/node/1?size=original

А теперь реальный полезный трюк.

Если вы наберете в браузере адрес http://yandex.ru/ или http://google.ru/ то заметите, что вас автоматом перекидывает на http://www.yandex.ru/ и http://www.google.ru/. Это не с проста. Для поисковика сайт с www и без www — два разных сайта. Конечно потом со временем эти адреса склеиваются и выбирается один главный, но хотелось бы сразу определиться с этим главным адресом и избежать ненужных проблем в последствии. Глядя на поисковых гигантов, пожалуй не возникает сомнений — главный адрес должен быть с www. Именно такую переадресацию мы и сделаем отредактировав наш htaccess файл. Сразу после строки RewriteEngine On вставляем следующее:

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

Здесь первой строкой идет условие при котором срабатывает наше правило. Второй строкой собственно правило, которое добавляет к адресу www.

Флаги [NC, L, R=301]

'nocase|NC' (no case) — не чувствителен к регистру. То есть разницы между amiseo и AmiSEO не будет.

L — описан выше

R=301 — использовать 301 редирект

а вот как убрать нежелательное зеркало вида www.amiseo.ru/index.php подобными неприятностями грешат многие CMS, по крайней мере drupal и joomla — точно:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.amiseo.ru/ [R=301,L]

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

upd: Лучше не делать такую переадресацию или проверять последствия. У меня, например, возникли проблемы со входом пользователя на сайт из-за нее.

Комментарии 

 
0 #2 AmiGator 10.02.2013 21:40
Quoting
ИМХО Гугл и Яша просто сохраняют www с древних времен, а зачем это новым сайтам? Как и .html в конце ссылки.

Зачем советовать то, из-за чего могут быть проблемы? У меня, например, проблемы точно будут, т.к. у меня на одном домене и сайт, и форум. Форум существовал раньше, сайт потом добавился. Если не ошибаюсь, при такой записи моему форуму без index.php будет кирдык. Форум на IPB и там везде используется "forum/index.php?".
Я прав насчет форума?


Насчет форума — попробуйте. На вскидку сложно сказать. а на счет www мне кажется вы не правы. Сайт с www и без для гугла и яши — два разных сайта, а значит одинаковый контен на них — потенциальное зло и должен быть исключен. Так что, лучше редиректить сразу. А вот с какого на какой, это уже вам решать
Цитировать
 
 
0 #1 Влад 08.02.2013 17:13
ИМХО Гугл и Яша просто сохраняют www с древних времен, а зачем это новым сайтам? Как и .html в конце ссылки.

Зачем советовать то, из-за чего могут быть проблемы? У меня, например, проблемы точно будут, т.к. у меня на одном домене и сайт, и форум. Форум существовал раньше, сайт потом добавился. Если не ошибаюсь, при такой записи моему форуму без index.php будет кирдык. Форум на IPB и там везде используется "forum/index.php?".
Я прав насчет форума?
Цитировать