重定向到新域上的相同路径

时间:2011-05-02 08:56:03

标签: php apache redirect dns

您好我有一个新域名,并希望将我的用户重定向到新域名的等效路径。

所以,如果他们继续:oldsite.com/money.php?value=1

然后它应该引导他们:newsite.com/money.php?value=1

我对所有页面都有相同的header.php,所以这可以用一个简单的php行完成吗?

5 个答案:

答案 0 :(得分:19)

我会给你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 :(得分:8)

你不应该在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也会了解您正在切换域名,并且不会降低双重内容的网页排名。

答案 2 :(得分:7)

这样的事情应该有效:

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

但是,如果您可以修改您的Web服务器的配置,那么这将是一个更好的地方。

答案 3 :(得分:3)

我喜欢使用此代码:

// 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

答案 4 :(得分:0)

您可以使用:

$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);