Настройки прописываются в конфигурационный файл .htaccess
редирект на адрес с www:
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.domain.ru/$1 [R=301,L]
Перенаправление с www.domain.ru на domain.ru:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*) http://%1/$1 [L,R=301]
Что здесь происходит: если имя хоста начинается на www., отрезаем www. и выполняем редирект с кодом 301
Еще вариант перенаправления с domain.ru на www.domain.ru:
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*) http://www.%1/$1 [L,R=301]
Здесь мы проверяем, что имя хоста не пустое и не начинается с www. Добавляем www. к имени хоста и выполняем редирект.
function redirect(){
document.location.href = 'http://yandex.ru/';
}
setTimeout('redirect();',15000);
Функция редиректа выполнится через 15 секунд
$host = $_SERVER['HTTP_HOST'];
$prefix = substr($host,0,4);
if ($prefix != "www.") {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.".$host.$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
exit();
}
if (preg_match("/faq\/\?page=([0-9]{1,5})&numpage=([0-9]{1,5})/i", $_SERVER['REQUEST_URI'])) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: /faq/page-".$_GET['page']."-".$_GET['numpage']);
exit();
}
При совпадении условия по регулярному выражению - происходит редирект на нужный урл
редиректим на урл со слешем
if (preg_match('{^(.+)[^\/]$}', $_SERVER['REQUEST_URI'], $m)) {
header("HTTP/1.1 301 Moved Permanently");
$status = "301 Found";
header("Status: ".$status);
header("Location: http://www.domain.ru".$m[0]."/");
exit();
}
Редирект с проверкой на веб-сервер (IIS или другой)
if ($_SERVER['REQUEST_URI']=='/index.php' && $_SERVER['HTTP_HOST']=='domain.ru'){
$header_location = (@preg_match('/Microsoft|WebSTAR|Xitami/', $_SERVER['SERVER_SOFTWARE'])) ? 'Refresh: 0; URL=' : 'Location: ';
header($header_location."http://domain.ru/", true, "301");
exit();
}
Примеры редиректов для nginx
location / {
# Чтобы избавиться от www, есть два способа:
# Если вызван какой-то другой домен (поддомен, например)
if ($host != 'example.com' ) {
rewrite ^/(.*)$ http://example.com/$1 permanent;
}
# Или, если вызван конкретно поддомен с www
if ($host = 'www.example.com' ) {
rewrite ^/(.*)$ http://example.com/$1 permanent;
}
# Замена правилам mod_rewrite от apache
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?route=$1 last;
break;
}
index index.php;
}
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
Теги - Linux , Php , Javascript , Ubuntu