web-dev-qa-db-ja.com

WebマスターのGoogleツールは、PHP拡張を削除した後、同じページに重複したコンテンツを表示します

オプションFetch as Googleを使用すると、次の問題が表示されます

duplicate content meta title
the story of....
/lifestyle/serialul-scorpion-inspirat-dintr-o-poveste-adevarata-a-lui-walter-o-brien.php
/lifestyle/serialul-scorpion-inspirat-dintr-o-poveste-adevarata-a-lui-walter-o-brien

Descoperă topul 10 a celor mai friguroase locuri din lume
/travel/descopera-top-10-care-sunt-cele-mai-friguroase-locuri-din-lume.php
/travel/descopera-top-10-care-sunt-cele-mai-friguroase-locuri-din-lume

この事実は、PHP拡張を削除した後に発生しました... htaccessを使用して

#remove the php extension
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
5
Stefan

既存のURL構造を変更する場合、古いURL(おそらくインデックスが作成され、リンクされている)を新しいURLにリダイレクトする必要があります。 (SEOとユーザーエクスペリエンスのために。)

あなたの場合、古いURL(.php拡張子を持つ)-インデックスが作成されている-は引き続きアクセス可能で、.php拡張子のないURLと同じコンテンツを返します。したがって、重複コンテンツ-同じコンテンツを返す2つの異なるURLがあります。

既存のディレクティブ内部的に書き換える同じURLへの拡張なしURLであるが、.php拡張子を持つ。これらのディレクティブの前に、外部リダイレクト.phpファイルに対するすべてのリクエストを拡張なしURLに送信する必要があります。ただし、書き換えループには注意する必要があります。書き換えループを防ぐために、THE_REQUEST(最初のリクエストのURLのみが含まれる)をチェックできます。例えば:

RewriteEngine On

# Redirect old URLs to new
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*\.php\ HTTP/
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*)\.php$ /$1 [R=301,L]

上記は、すべてのrequestedが実際のファイルとして存在する.phpで終わるURLに対して、redirect同じURLから.php拡張子を除いたものになります。

既存のディレクティブが続きます:

# Rewrite new (extensionless) URLs to the actual file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]

文字クラス内のドット(.)をエスケープする必要はありません。文字クラス内では、ドットはリテラルドットです。不要であると思われるNCフラグを削除しました。 (あなたのコメントも変更しました...これらのディレクティブは「PHP拡張機能を削除」せず、追加し直します!アプリケーションのリンクの.php拡張機能は既に削除されていると思われます。現在は動作しません。)

3
MrWhite

URLの使いやすさを維持できる、はるかに単純なソリューションがあります。 .htaccessコードは次のとおりです。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*).php/?$ [NC]
RewriteRule ^(.*)/?$ /? [R=301,L]

つまり、末尾のスラッシュの有無にかかわらず、拡張子が.phpであるドメインのすべてにアクセスしようとするゲストは、ホームページにリダイレクトされます。私は自分のサイトでこの考えを使用して、潜在的なハッカーを怒らせます。

次に、Googleでファイル拡張子のないわかりやすいURLのインデックスを作成します。これで問題ありません。重複コンテンツの問題はありません。

私の方法の唯一の注意点は、URL(PHP拡張のあるものとないもの)がまったく同じコンテンツを返し、PHPファイルが更新されないPHPファイルが多数ある場合、私の方法はサイトにアクセスするゲストを引き起こすホームページからやり直すためのphp拡張機能。

繰り返しになりますが、ホームページにニュースを投稿し、ホームページを介してサイトの更新されたセクション(更新されたurl)をゲストに広告し、ゲストが最初にホームページにアクセスすると、私のアイデアは完璧です。

ポイントは、2つのURLがまったく同じコンテンツを返す場合、これらの条件の少なくとも1つが当てはまることを確認することです。

  1. 1つのURLは、ユーザーを他のURLに送信するリダイレクトページを返します。
  2. ページの複製コピーであるURLのHTMLコードには<link rel="canonical" href="x">が含まれています。 「x」は、ページの元のコピーのURLに置き換えられます。
  3. コピーされるURLのHTMLコードには<meta name="robots" content="noindex">が含まれています。私はこれを頻繁に使用する傾向があります。
0
Mike