0

新しいドメイン名に移動しており、すべての着信リンクを新しいドメイン名にリダイレクトする必要があります。すべてのページは両方の Web サイトにあります。

(例: www.oldsite.com/services.php と www.exemple.com/services.php は両方ともアクティブで同一です。)

.htaccess ファイルをいじることなく、自分のコードが SEO に適しているかどうかを知りたいです。

<?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);
} ?>
4

2 に答える 2

1

いくつかのポイント:

  • おそらくHTTP_HOST(要求されたホスト名)が必要であり、SERVER_NAME.
  • サブドメインを使用していないと仮定すると、使用する必要はありませんstrpos。2 つのホスト名を比較し、等しくない場合はリダイレクトします。
  • 必要な 301 ヘッダーは 1 つだけです
  • htaccess は、特に htaccess ファイルが既にある場合は、PHP を使用するよりもかなり高速です。

それを念頭に置いて、おそらくあなたのコードを次のように書き直します:

<?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 バージョン (mod_rewrite が有効になっていると仮定) は次のようになります。

RewriteEngine On

RewriteCond %{HTTP_HOST} !(^www.exemple.ca)
RewriteRule (.*) http://www.exemple.ca/$1 [R=301,L]
于 2013-02-28T17:22:45.873 に答える
0

301それが得られるのと同じくらいSEOフレンドリーです。ページが完全に移動したことをスパイダーに示します。

于 2013-02-28T17:19:51.490 に答える