4

大きな問題は、私がプログラマーではないということです….! だから私は自分の能力の範囲内の手段でこれを解決する必要があります.

Google インデックスに多数の URL が重複しているという問題があり、それが SEO の問題を引き起こしているという強い兆候があります。

サイト自体に重複したリンクはありませんが、以前は設定されていたので、特定のページでは、システムがあらゆる種類の URL のバリエーションを許可しています。特定の記事 ID がある限り、同じコンテンツが無数の URL で表示されます。

Google のインデックスの重複は長い間増加していると思います。これは、私のサイトにリンクしている他のサイトからのリンクがうまくいかなかったことが原因です。問題は、システムがバリエーションを受け入れたことです。

Google インデックスに存在するバリエーションの例を次に示します。

  • site.com/a/Cow_Cat/id/5272
  • site.com/a/cow_cat/id/5272
  • site.com/a/cow…cat/id/5272
  • site.com/a/cowcat/id/5272
  • site.com/a/bird/id/5272

大文字と小文字が混在する最初の URL は、サイト全体で使用される URL であり、今のところはこれに対応する必要があります。すべて小文字に変更するには時間がかかりすぎます。全部で 300.000 件の記事があるため、htaccess を介して手動で作業することはできません。1 つ以上の重複があるものは数万あると思います。

私の質問はこれです:

上記の URL を 300.000 の残りの URL と同様に 1 つとして処理するために、htaccess で正規 URL のルールを作成することは可能ですか?

つまり、すべての URL が

/a/*/id/ユニークID

1 = 一意の ID のみに基づいており、「*」で表されたテキストは考慮しないと見なす必要がありますか?

上記のような特定のパターンは、最後の一意のセグメントによってのみ区別されるべきであると言えるようになることを願っています。

htaccess でそれができない場合、各ページでリンク rel="canonical" を使用してどのように行うのでしょうか。コードにワイルドカードを含めることはできますか?

重複の大部分は、サイト自体が混合を使用している場合に受信リンクが小文字であることが原因であることを付け加えておきます. サイト自体は基本的に小文字と大文字を混在させて使用していますが、正規の URL を小文字のみで割り当てても問題ないでしょうか?

これが可能であれば、その方法を教えていただけるととても嬉しいです!!!!

ジョナス


こんにちはマイケル!私は専門家ではありませんが、これは私がそれを行うことができると思う方法です:

1) 私の問題は、URL に大文字と小文字が混在していて、今は変更できないことです。

2) 検索エンジンに問題がなければ、正規の URL を実際の URL と同じにすることは問題ありませんが、すべて小文字であるという違いがあります。これにより、重複の約 90% が解決されます。これは、使用される URL: site.com/a/Cow_Cat/id/5272 であり、これは正規の URL: site.com/a/cow_cat/id/5272 です。私が理解しているように、それは良いSEOになるでしょう...または...?

私の考えは、アドレスブラウザのアドレスバーを変更するのではなく(つまり、301リダイレクトを使用する)、検索エンジンにどのURLが重複しているかを伝えることでした。これは、htaccessで(パターンとして・お願いします)または各ページのタグとして。

3) 場合、ワイルドカード ソリューションを見つけることが可能です...これが可能かどうかはわかりませんが、それは、特定の正規 URL ではなく、「グループ パターン」を割り当てることが可能であることを意味します。 「検索エンジンで、このパターンを持つすべての URL を参照してください - 最後に一意の識別子があります - それらが 1 つの同じ URL であるかのように、あなたがどちらを好むか決めてください」: /a/*/id/uniqueid

それはうまくいくでしょうか?一意の ID として定義された部分を持つパターンとしてグループが定義されているグループとして正規の URL を定義できる場合、htaccess でのみ機能します。

各ページにタグを追加するときに、「この一意の ID を含むすべての URL を同じように扱う必要がある」ということは可能ですか? それが機能する場合、これに似たものになります

リンク rel="canonical" /a/*/id/5272

ワイルドカードを使用したこの構文が存在するかどうかはわかりませんが、それはいいでしょう:)

4

1 に答える 1

1

My advice would be to use 301 redirects, with URL rewriting. Ask your webmaster to place this in your apache config or virtual host config:

RewriteMap  lc int:tolower

Then inside your .htaccess file you can use the map ${lc:$1} to convert matches to lower case. Here, the $1 part is a match (backreference from brackets in a regex in the RewriteRule) and the ${lc: } part is just how you apply the lc (lowercase) function set up earlier. Here is an example of what you might want in your .htaccess file:

RewriteCond %{REQUEST_URI} [A-Z]      #this matches a url with any uppercase characters
RewriteRule (.*) /${lc:$1} [L,R=301]  #this makes it lowercase

As for matching the IDs, presuming your examples mean "always end with the ID" you could use a regex like:

^(.+/)(\d+))$

The first match (brackets) gets everything up to and including the forward slash before the ID, and the second part grabs the ID. We can then use it to point to a single, specific URL (like canonical, but with a 301).

If you do just want to use canonical tags, then you'll have to say what you're using code wise, but an example I use (so as not add tags to hundreds of individual pages, for instance) in PHP would be:

  if ($_SERVER["REDIRECT_URL"] != "") {
    $canonicalUrl = $_SERVER["SERVER_NAME"] . $_SERVER["REDIRECT_URL"];
  } else if ($_SERVER["REQUEST_URI"] != "") {
    $canonicalUrl = $_SERVER["SERVER_NAME"] . preg_replace('/^([^?]+)\?.*$/', "$1", $_SERVER['REQUEST_URI']);
  }

Here, the redirect URL is used if it's available, and if not the request uri is used. This code strips off the query string (this bold bit in http://www.mysite.com/a/blah/12345/?something=true). Of course you can add to this code to specify a custom path, not just taking off the query string, by playing with the regex.

于 2012-09-26T08:18:31.457 に答える