通常、私は .htaccess の単純なルールを使用して Apache ModRewrite を使用してサーバーに Web サイトを展開し、www を含むアドレスを www なしにリダイレクトします。www.example.com => example.com
現在、IIS + UrlRewrite を使用して Windows のサーバーに Web サイトを展開しています。リダイレクト設定を実現する web.config ファイルには、www アドレスを削除する次のルールがあります。
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
ブラウザ経由で、リダイレクトは完全に機能します!
ただし、Facebook や Google+1 ボタンなどのいくつかの外部ツールは、リダイレクト ルールが有効になっていると機能しません。
たとえば、Google+1 ボタンをクリックするとエラーが発生します (要求でボタンをクリックすると、エラーが表示されます: "コード": -32099、"メッセージ": "バックエンド エラー")。
次のツールを使用して www アドレスを使用して Web サイトを分析しようとすると、Facebook で既に問題を認識しています: http://developers.facebook.com/tools/debug
Facebook エラー:URL Parsing Error: Error parsing the URL typed, no data was collected.
リダイレクトを無効にすると、Google+1 ボタンと Facebook の分析ツールが完全に機能します。
注:解決策を見つけるために無効なルールを残したいので、原則はサイトに通知しません。リンクを通知する必要がある場合は、この質問を編集します。
編集: いくつかのテストの後、ルールが有効になっているかどうかに関係なく、+1 ボタンに関する私の問題は続きます。Google Code で同じ問題に関するスレッドを見つけましたが、何をすべきかわかりません:
この問題は、サイトにバインドされている場合にのみ発生します。+1 ボタンが 2 つあるテスト ページを作成しました。1 つはサイトを指し、Stackoverflow を指しています。ボタンをクリックすると Stackoverflow が機能しますが、他のボタンは機能しません: