Перенаправление на тот же путь в новом домене

#php #apache #redirect #dns

#php #apache #перенаправление #dns

Вопрос:

Привет, у меня появился новый домен, и я хочу перенаправить своих пользователей на эквивалентный путь нового домена.

Итак, если они продолжат: oldsite.com/money.php?value=1

Затем он должен направить их на: newsite.com/money.php?value=1

У меня такой же header.php для всех страниц, так можно ли это сделать с помощью простой строки php?

Комментарии:

1. Вы хотите сделать это с помощью php-скрипта? Я не знаю, где у вас находится ваш домен, но не могли бы вы установить какие-нибудь настройки, чтобы сделать это за вас?

Ответ №1:

Я дам вам 2 функции, которые могут быть полезны для чего-то другого;

 function currentURL() {
     $pageURL = 'http';
     ($_SERVER["SERVER_PORT"] === 443) ? $pageURL .= "s" : '';
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
 }


function redirect2NewDomain () {
    $url = currentURL();
    if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === FALSE) {
       return false;
    }
    # Get the url parts
    $parts = parse_url($url);
    Header( "Location : {$parts['scheme']}://{$parts['host']}" );
}
  

Конечно, использование .htaccess намного проще и будет лучше для SEO;

 RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 
  

Я надеюсь, что это поможет

Комментарии:

1. Я бы определенно выбрал метод .htaccess.

2. Вы можете отправить заголовок 301 в PHP-скрипте, и это будет иметь аналогичные эффекты с точки зрения SEO.

3. Да, я мог бы добавить, что все равно это ничуть не лучше, чем .htaccess

4. Только что нашел этот пост, потому что у меня была такая же проблема, я использовал метод .htaccess. Отлично сработало!

5. Большое спасибо за информацию .htaccess

Ответ №2:

Что-то вроде этого должно сработать:

 $uri = $_SERVER['REQUEST_URI'];
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://newsite.com$uri" ); 
  

Но если вы можете вместо этого изменить конфигурацию вашего веб-сервера, это было бы лучшим местом для этого.

Комментарии:

1. script_name не содержит переменных get

Ответ №3:

Вы не должны делать это в PHP. Эти вещи можно легко выполнить в вашем .htaccess:

 #Options  FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.olddomain.com$[OR]
RewriteCond %{HTTP_HOST} ^olddomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
  

Этот код перенаправит olddomain.com/page.php на newdomain.com/page.php

Он также перенаправит папки: olddomain.com/folder/ на newdomain.com/folder/

Используя этот код, Google также поймет, что вы переключаете домены, и не понизит рейтинг вашей страницы из-за двойного контента.

Ответ №4:

Мне нравится использовать этот код:

 // BEGIN redirect domain
$domainRedirect = 'myNewDomain.com';
if(
($_SERVER['HTTP_HOST'] != $domainRedirect)
){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://".$domainRedirect.$_SERVER['REQUEST_URI']);
exit;
}
// END redirect domain
  

это:

 header("HTTP/1.1 301 Moved Permanently"); 
  

необязательно, но лучше для SEO: (https://moz.com/learn/seo/redirection )

Ответ №5:

Вы можете использовать это:

 $new_domain = "http://example.com"; //your new domain
$uri = $_SERVER['REQUEST_URI']; // URL from the request with the get variables
header("Location: " . $new_domain . $uri);