Table of Contents
Код
Обучить Google Analytics русскоязычным поисковикам
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-xxxxxxx-x"; _uOsr[34]="blogs.yandex.ru"; _uOkw[34]="text"; _uOsr[35]="rambler.ru"; _uOkw[35]="words"; _uOsr[36]="mail.ru"; _uOkw[36]="q"; _uOsr[37]="webalta"; _uOkw[37]="q"; _uOsr[38]="aport"; _uOkw[38]="r"; _uOsr[39]="nigma.ru"; _uOkw[39]="s"; _uOsr[40]="go.mail.ru"; _uOkw[40]="q"; urchinTracker(); </script>
Редирект для всех, кроме поисковиков
robots.txt
User-Agent: * Disallow: /goto/
goto/.htaccess
<Files ~ "^[\._]ht"> Order allow,deny Deny from all Satisfy All </Files> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /goto/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /goto/index.php </IfModule>
goto/index.php
<?php function io_saveFile($file,$content,$append=false){ $mode = ($append) ? 'ab' : 'wb'; $fileexists = @file_exists($file); $fh = @fopen($file,$mode); if(!$fh){ echo "Writing $file failed"; return false; } fwrite($fh, $content); fclose($fh); return true; } $links=array( 'link1' => 'http://server1.com/software.html', 'link2' => 'http://server2.net/projects/', 'link3' => 'http://www.server3.com', ); $s=str_replace('/goto/','',$_SERVER['REQUEST_URI']); $s=str_replace('/','',$s); $l=''; if(isset($links[$s])) $l=$links[$s]; $t = time(); $log = date('Y.m.d H:i:s',$t)."\t".$_SERVER['REMOTE_ADDR']."\t".$l."\t".$_SERVER['HTTP_USER_AGENT']; if (strpos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') === false) { // переадресация для всех, кроме гугльбота io_saveFile('redirect.log',"$log\n",true); //сохранить в лог header('Location: '.$l); } else { io_saveFile('redirect.log',"Отловлен гугльбот!\t".$log."\n",true); //сохранить в лог header('Location: http://mysite.com/'); // послать его на первую страницу }; ?>
Примеры использования Mod_Rewrite
Посетители веб-сайта авторизуются при помощи стандартной авторизации (AuthType BasicAuth). Необходимо по ссылке /home/первая буква логина/ показывать содержимое их домашних каталогов.
RewriteEngine on RewriteCond %{REMOTE _ USER} != "" RewriteCond /home/(.)/(%{REMOTE_USER}) -d RewriteRule (.*) /home/%2/$1
Жесткий запрет посещений нашего веб-сайта для робота поисковой системы Google
RewriteEngine on RewriteCond %{USER_AGENT} Googlebot RewriteRule .* - [F] # Другой вариант возвращает вместо ошибки 403 ( FORBIDDEN ) ошибку 404 ( NOT _ FOUND ) RewriteCond %{USER_AGENT} Googlebot RewriteRule .* - [R=404]
Закрыть доступ к веб-сайту в рабочее время
RewriteEngine on RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900 RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800 RewriteRule .* - [ F ]
Если на вашем сайте есть очень ценные картинки или архивы и вы не хотите чтобы кто-то размещал их (если архивы, то ссылки на них) на своих страницах, создавая таким образом бесполезный трафик для вашего сайта, вы можете запретить скачивание ресурсов, проверяя поле заголовка HTTP_REFERER. для каталога:
RewriteEngine on RewriteBase /img/ RewriteCond %{HTTP_REFERER} !^$ RewriteRule .* - [ F ]
и для определенных типов файлов
RewriteEngine on RewriteBase /img/ RewriteCond %{HTTP_REFERER} !^$ RewriteRule \.(jpe?g|gif|png|css|swf)$ - [ F ]
В связи с неоднозначностью записи расширения HTML файлов (.htm или .html), некоторые пользователи могут ошибочно набрать адрес страницы. Для автоматического исправления такого рода ошибок, можно воспользоваться mod_rewrite.
RewriteEngine on RewriteBase / RewriteRule ^(.*)\.htm$ $1.html [R=permanent]
Необходимо запрос любой страницы сайта отправлять на одну (будет написано что сайт временно ен доступен), но в то же время нужно оставить его открытым для поисковых машин. То есть для клиентов сайт закрыт, а для индексации - открыт.
RewriteEngine on RewriteBase / RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^gaisbot.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} !^crawler.* [NC,OR] RewriteRule ^/$ - [L,R]
Перенаправление несуществующих URL на другой веб-сервер
RewriteEngine on RewriteBase / RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f RewriteRule ^(.+) http://webserverB.dom/$1
Проблема здесь в том, что это будет работать только для страниц находяшихся внутри DocumentRoot. Тогда как вы можете добавить больше условий (например ещё и для управления домашними каталогами, и т.д.) есть лучший вариант:
RewriteEngine on RewriteBase / RewriteCond /your/docroot/%{REQUEST_FILENAME} !-U RewriteRule ^(.+) http://webserverB.dom/$1
Сайт перенесен с одного домена на другой с domain.com на domain2.com
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [R=301,1] RewriteRule ^(.*)$ http://www.domain2.com/$1
Часто хостинговые провайдеры накладывают ограничение на количество уикальных сайтов, и зачастую под это ограничение попадают и поддомены. Данное ограничение можно обойти средствами .htaccess. Например мы хотим направить поддомен forum.yourdomain.net на директорию ~/forum для этого необходимо направить нужные поддомены на папку с остновным сайтом и создать вложенную директорию например forum
RewriteEngine on RewriteCond %{HTTP_HOST} ^forum\.yuordomain\.net$ [NC] RewriteCond %{REQUEST_URI} !^/forum/$ [NC] RewriteRule (.*) /forum/$1 [L]