1

私は最近、ウェブサイトの構築を完了しました。サイトを Google のインデックスに登録しようとしているときに、奇妙なことが起こっているようです。私の Google-fu は何も明らかにしていないので、誰かがこれに光を当ててくれることを望んでいました.

私が実行しているサーバースタックは、次のもので構成されています。

Debian 7 / Apache 2.2.22 / MySQL 5.5.31 / PHP 5.4.4-14

私が抱えている問題は、Google がいくつかの奇妙な URL をインデックスに登録しようとしているようで、現在、それらを実際の正当なページよりも上位にランク付けしていることです。ここに奇妙なものをリストします:

www.mydomain.com/srv/www/mydomain?srv/www/mydomain
www.mydomain.com/srv/www?srv/www
www.mydomain.com/srv/www?srv/www/index‎

ウェブマスター ツールから、「これは robots.txt によってブロックされた重要なページです」と表示されるようになりました。これは、問題を発見するとすぐに、ファイルに301 リダイレクトhtaccessをいくつか追加して、これらのリクエストをホームページに送信し、robots ファイル内のアドレスをブロックしたためです。

また、すべての正しい URL を含む XML サイトマップをウェブマスター ツールに送信しました。

すべての Web サイト ファイルは次の場所に保存されます。

/srv/www/mydomain/public_html/

これは、私が .htaccess mod-rewrite ルールを設定した方法と関係があると思いますが、それが何をしているのか理解できないようです。また、Apache vhosts 構成である可能性もあります。以下に両方を含めます。

.htaccess mod-rewriteルール:

<IfModule mod_rewrite.c>
    RewriteEngine on

# Redirect requests for all non-canonical domains
# to same page in www.mydomain.com
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
    RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]


# Remove .php file extension
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php

# redirect all traffic to index
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index [L]

# Remove 'index' from URL
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index [NC]
    RewriteRule ^ / [R=301,L]

</IfModule>

Apache 仮想ホスト:

<VirtualHost *:80>
    ServerAdmin webmaster@mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /srv/www/mydomain/public_html/
    ErrorLog /srv/www/mydomain/logs/error.log
    CustomLog /srv/www/mydomain/logs/access.log combined
</VirtualHost>

また、関連する可能性がある場合、私のPHPページの処理は次のとおりです。

# Declare the Page array
$Page = array();

# Get the requested path and trim leading slashes
$Page['Path'] = ltrim($_SERVER['REQUEST_URI'], '/');

# Check for query string
if (strpos($Page['Path'], '?') !== false) {

    # Seperate path and query string
    $Page['Query']  = explode('?', $Page['Path'])['1'];
    $Page['Path']   = explode('?', $Page['Path'])['0'];
}

# Check a path was supplied
if ($Page['Path'] != '') {

    # Select page data from the directory
    $Page['Data'] = SelectData('Directory', 'Path', '=', $Page['Path']);

    # Check a page was returned
    if ($Page['Data'] != null) {

        # switch through allowed page types
        switch ($Page['Data']['Type']) {

            # There are a bunch of switch cases here that
            # Determine what page to serve based on the
            # page type stored in the directory

        }

    # When no page is returned
    } else {

        # 404
        $Page = Build404ErrorPage($Page);
    }

# When no path supplied
} else {

    # Build the Home page
    $Page = BuildHomePage($Page);
}

これを引き起こしている何かをここで誰か見ることができますか?

4

1 に答える 1

1

多くの調査の結果、私の問題は、Google が Web サイトの完成前にインデックスを作成しようとしたことと、いくつかの不完全なページ処理スクリプトの組み合わせが原因であると結論付けました。私の間違いは、開発中にすべてのロボットをブロックしなかったことです。

問題の解決策はこれでした:

  1. すべての有効な URL を含むxml サイトマップを Google ウェブマスター ツールに送信します。

  2. 301すべての奇妙な URL を正しいホームページにリダイレクトする

  3. Google ウェブマスター ツールを使用して間違った URL の削除をリクエストする

  4. robots.txt ファイルを使用して、不正な URL への Googlebot のアクセスをブロックする

  5. Google がサイトを再クロールして正しくインデックスに登録するまで待ちます。

Googlebot が問題を修正するのを待つのが最も困難な部分でした。

于 2014-01-24T02:49:07.430 に答える