Научите делать правильный редирект пожалуйста

Кристина
На сайте с 05.06.2006
Offline
75
702

У меня есть два домена: в зоне .ru и в зоне .com. Сайт размещен в зоне .com. А в корпоративных визитках указано, что сайт имеет вид site.ru. Как мне сделать редирект в таком случае, чтобы пользователи, набравшие в браузере site.ru переправлялись на site.com. В поиске не нашла ответа:)

Спасибо)

MASTAKILLA
На сайте с 11.05.2006
Offline
160
#1

<?

$arr[1]="http://www.site.com"; //куда перенаправить

$arr[2]="http://www.site.com"; //куда перенаправить

$arr[3]="http://www.site.com"; //куда перенаправить

if (!$arr[$n]) die("Wrong N parameter");

header ("location: " . $arr[$n]);

?>

в index.php пропишите ;) того сайта с которого надо поставить редирект;)

Кристина
На сайте с 05.06.2006
Offline
75
#2
MASTAKILLA:
<?
$arr[1]="http://www.site.com"; //куда перенаправить
$arr[2]="http://www.site.com"; //куда перенаправить
$arr[3]="http://www.site.com"; //куда перенаправить
if (!$arr[$n]) die("Wrong N parameter");
header ("location: " . $arr[$n]);
?>

в index.php пропишите ;) того сайта с которого надо поставить редирект;)

не работает(( пишет Wrong N parameter

Кристина
На сайте с 05.06.2006
Offline
75
#3

нашла ошибку:) спасибо большое:)

MASTAKILLA
На сайте с 11.05.2006
Offline
160
#4

убедитесь что у вас в php.ini

параметр: register_globals=on

Если он off:

то вместо $n напишите везде $_GET['n']

MASTAKILLA
На сайте с 11.05.2006
Offline
160
#5

:)) пока писал уже сами все сделали, молодцы)))

C
На сайте с 19.09.2001
Offline
120
#6
в index.php пропишите...

Нехороший совет! 🙅

Будет со вспомогательных зеркал кидать на основное 302-м редиректом, Гугль может наоборот склеить.

Пропишите в htaccess лучше правила:

RewriteEngine On

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

А если надо именно в PHP редирект делать, то делайте 301-й редирект, а не 302-й. Не помню навскидку, к сожалению, как это сделать.

С уважением, Владимир Чернышов. (не)?путевые заметки (http://chernyshov.kiev.ua/)
MASTAKILLA
На сайте с 11.05.2006
Offline
160
#7
Cherny:
Нехороший совет! 🙅

То что я сказал будет аналогично вашему .htaccess.

Вот коды отдавайте любой в хедере и если надо 301:

<?PHP

/**

* HTTP Protocol defined status codes

* @param int $num

*/

function HTTPStatus($num) {

static $http = array (

100 => "HTTP/1.1 100 Continue",

101 => "HTTP/1.1 101 Switching Protocols",

200 => "HTTP/1.1 200 OK",

201 => "HTTP/1.1 201 Created",

202 => "HTTP/1.1 202 Accepted",

203 => "HTTP/1.1 203 Non-Authoritative Information",

204 => "HTTP/1.1 204 No Content",

205 => "HTTP/1.1 205 Reset Content",

206 => "HTTP/1.1 206 Partial Content",

300 => "HTTP/1.1 300 Multiple Choices",

301 => "HTTP/1.1 301 Moved Permanently",

302 => "HTTP/1.1 302 Found",

303 => "HTTP/1.1 303 See Other",

304 => "HTTP/1.1 304 Not Modified",

305 => "HTTP/1.1 305 Use Proxy",

307 => "HTTP/1.1 307 Temporary Redirect",

400 => "HTTP/1.1 400 Bad Request",

401 => "HTTP/1.1 401 Unauthorized",

402 => "HTTP/1.1 402 Payment Required",

403 => "HTTP/1.1 403 Forbidden",

404 => "HTTP/1.1 404 Not Found",

405 => "HTTP/1.1 405 Method Not Allowed",

406 => "HTTP/1.1 406 Not Acceptable",

407 => "HTTP/1.1 407 Proxy Authentication Required",

408 => "HTTP/1.1 408 Request Time-out",

409 => "HTTP/1.1 409 Conflict",

410 => "HTTP/1.1 410 Gone",

411 => "HTTP/1.1 411 Length Required",

412 => "HTTP/1.1 412 Precondition Failed",

413 => "HTTP/1.1 413 Request Entity Too Large",

414 => "HTTP/1.1 414 Request-URI Too Large",

415 => "HTTP/1.1 415 Unsupported Media Type",

416 => "HTTP/1.1 416 Requested range not satisfiable",

417 => "HTTP/1.1 417 Expectation Failed",

500 => "HTTP/1.1 500 Internal Server Error",

501 => "HTTP/1.1 501 Not Implemented",

502 => "HTTP/1.1 502 Bad Gateway",

503 => "HTTP/1.1 503 Service Unavailable",

504 => "HTTP/1.1 504 Gateway Time-out"

);

header($http[$num]);

}

?>

C
На сайте с 19.09.2001
Offline
120
#8
То что я сказал будет аналогично вашему .htaccess.

Почти аналогично, а в деталях кроется бес. :)

Отличие 301-го редиректа от 302-го для пользователя нулевое, но не для поисковиковых роботов, проксей и т.д.

За функцию спасибо, если не ошибаюсь, надо в результате дважды вызвать header:

...

header($http[301]);
...
header ("Location: " . $arr[$n]);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий