Киби.ru

Живой сайт об актуальных проектах

User Tools

Site Tools


notes:code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
notes:code [2010/02/10 13:49] – Page moved from code to notes:code kibinotes:code [2010/04/24 13:58] (current) kibi
Line 1: Line 1:
 +====== Код ======
  
 +===== Обучить Google Analytics русскоязычным поисковикам =====
 +
 +<code javascript>
 +<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>
 +</code>
 +
 +===== Редирект для всех, кроме поисковиков =====
 +
 +**robots.txt**
 +
 +<code robots>
 +User-Agent: *
 +Disallow: /goto/
 +</code>
 +
 +**goto/.htaccess**
 +
 +<code apache>
 +<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>
 +</code>
 +
 +**goto/index.php**
 +
 +<code 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/'); // послать его на первую страницу
 + };
 + ?>
 +</code>
 +
 +===== Примеры использования Mod_Rewrite =====
 +
 +
 +Посетители веб-сайта авторизуются при помощи стандартной авторизации (AuthType BasicAuth). Необходимо по ссылке /home/первая буква логина/ показывать содержимое их домашних каталогов.
 +
 +<code apache>
 +RewriteEngine on
 +RewriteCond %{REMOTE _ USER} != ""
 +RewriteCond /home/(.)/(%{REMOTE_USER}) -d
 +RewriteRule (.*) /home/%2/$1
 +</code>
 +
 +Жесткий запрет посещений нашего веб-сайта для робота поисковой системы Google
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteCond %{USER_AGENT} Googlebot
 +RewriteRule .* - [F]
 +
 +# Другой вариант возвращает вместо ошибки 403 ( FORBIDDEN ) ошибку 404 ( NOT _ FOUND ) 
 +RewriteCond %{USER_AGENT} Googlebot
 +RewriteRule .* - [R=404]
 +</code>
 +
 +Закрыть доступ к веб-сайту в рабочее время
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900
 +RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800
 +RewriteRule .* - [ F ] 
 +</code>
 +
 +Если на вашем сайте есть очень ценные картинки или архивы и вы не хотите чтобы кто-то размещал их (если архивы, то ссылки на них) на своих страницах, создавая таким образом бесполезный трафик для вашего сайта, вы можете запретить скачивание ресурсов, проверяя поле заголовка HTTP_REFERER. для каталога:
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteBase   /img/
 +RewriteCond %{HTTP_REFERER} !^$
 +RewriteRule .* - [ F ] 
 +</code>
 +
 +и для определенных типов файлов
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteBase   /img/
 +RewriteCond %{HTTP_REFERER} !^$
 +RewriteRule \.(jpe?g|gif|png|css|swf)$ - [ F ] 
 +</code>
 +
 +В связи с неоднозначностью записи расширения HTML файлов (.htm или .html), некоторые пользователи могут ошибочно набрать адрес страницы. Для автоматического исправления такого рода ошибок, можно воспользоваться mod_rewrite.
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteBase   /
 +RewriteRule ^(.*)\.htm$  $1.html [R=permanent] 
 +</code>
 +
 +Необходимо запрос любой страницы сайта отправлять на одну (будет написано что сайт временно ен доступен), но в то же время нужно оставить его открытым для поисковых машин. То есть для клиентов сайт закрыт, а для индексации - открыт.
 +
 +<code apache>
 +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] 
 +</code>
 +
 +Перенаправление несуществующих URL на другой веб-сервер
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteBase   /
 +RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
 +RewriteRule ^(.+) http://webserverB.dom/$1  
 +</code>
 +
 +Проблема здесь в том, что это будет работать только для страниц находяшихся внутри DocumentRoot. Тогда как вы можете добавить больше условий (например ещё и для управления домашними каталогами, и т.д.) есть лучший вариант:
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteBase   /
 +RewriteCond /your/docroot/%{REQUEST_FILENAME} !-U
 +RewriteRule ^(.+) http://webserverB.dom/$1  
 +</code>
 +
 +Сайт перенесен с одного домена на другой с domain.com на domain2.com
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [R=301,1]
 +RewriteRule ^(.*)$ http://www.domain2.com/$1
 +</code>
 +
 +Часто хостинговые провайдеры накладывают ограничение на количество уикальных сайтов, и зачастую под это ограничение попадают и поддомены. Данное ограничение можно обойти средствами .htaccess. Например мы хотим направить поддомен forum.yourdomain.net на директорию ~/forum для этого необходимо направить нужные поддомены на папку с остновным сайтом и создать вложенную директорию например forum
 +
 +
 +<code apache>
 +RewriteEngine on
 +
 +RewriteCond %{HTTP_HOST} ^forum\.yuordomain\.net$ [NC]
 +RewriteCond %{REQUEST_URI} !^/forum/$ [NC]
 +RewriteRule (.*) /forum/$1 [L]
 +</code>

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki