相对于php中的url重定向301

时间:2013-02-28 17:17:17

标签: php redirect seo

我正在转移到新的域名,我需要将所有传入的链接重定向到新的域名。所有页面都在两个网站上。

(例如:www.oldsite.com/services.php和www.exemple.com/services.php都是有效的和相同的。)

我想知道我的代码是否适合搜索引擎优化而不会弄乱.htaccess文件。

<?php
$referer = $_SERVER['SERVER_NAME'];
$domain = "www.exemple.ca";
$uri = $_SERVER['REQUEST_URI'];

if(strpos($referer,$domain) === false) {
    header( "HTTP/1.1 301 Moved Permanently" );
    header( "Status: 301 Moved Permanently" );
    header( "Location: http://www.exemple.ca$uri" );
    exit(0);
} ?>

2 个答案:

答案 0 :(得分:1)

几点:

  • 您可能需要HTTP_HOST(请求的主机名),而不是SERVER_NAME
  • 假设您没有使用任何子域名,则无需使用strpos,我只会比较两个主机名并重定向,如果它们不相等
  • 您只需要一个301标题
  • htaccess比使用PHP要快得多,特别是如果你已经有一个htaccess文件

考虑到这一点,我可能会将您的代码重写为:

<?php
$referer = $_SERVER['HTTP_HOST'];
$domain = "www.exemple.com";
$uri = $_SERVER['REQUEST_URI'];

if($referer != $domain) {
    header( "Location: http://www.exemple.ca$uri" true, 301);
    exit(0);
} ?>

您可能也只想对GET请求执行此操作。

htaccess verison(假设启用了mod_rewrite)将是:

RewriteEngine On

RewriteCond %{HTTP_HOST} !(^www.exemple.ca)
RewriteRule (.*) http://www.exemple.ca/$1 [R=301,L]

答案 1 :(得分:0)

301就像SEO一样友好。它向蜘蛛表明该页面已永久移动。