web-dev-qa-db-ja.com

S3でホストしているときに、index.htmlへの302リダイレクトを強制する方法は?

次の2つのURLに同じコンテンツが表示されることがわかりました。

http://example.com/blog/
http://example.com/blog/index.html

最初のURLの場合、blog疑似フォルダーからindex.htmlを取得するようです。これは、インデックスドキュメントとしてindex.htmlが設定されているためだと思います。

ただし、ブラウザはリダイレクトされません。つまり、同じコンテンツに対して2つの異なるURLがヒットすることになります。分析などの観点から、これは苦痛です。

301を使用してS3をindex.htmlにリダイレクトできますか?またはその逆ですか?

2
Dan Gravell

まず、/blog/または/blog/index.htmlのいずれかのバージョンのURLにのみリンクしていることを確認します(短くてシンプルなので前者の方が望ましいです)。

SEOに関する最善の解決策は、正規のタグを使用することです。これを<head>タグ内に配置します。

<link rel="canonical" href="http://yoursite.com/blog/">

つまり、検索エンジンは両方のURLを見ると同じように扱われ、検索エンジンからの訪問者が/blog/ではなく/blog/index.htmlにヒットするようにします。

他のサイトからのリンクがある場合は、訪問者がどこに着地するかを制御できない可能性があります。そのため、分析のためには、おそらくユーザーをリダイレクトする価値があります。

静的なサイトであることを考えると、状況にサーバー側のルールがあるかどうかはわかりませんが、.htaccessを使用できる場合は、次のようにする必要があります。

Redirect 301 /blog/index.html /blog/

最後に、他のすべてが失敗した場合、JavaScriptを使用してユーザーをリダイレクトすることは問題ありません。

<script>
if (window.location.href.indexOf('index.html') != -1)
    window.location.href = '/blog/';
</script>
3
DisgruntledGoat

<head>を開く前に、上部の/blog/index.htmlに配置します

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://www.example.com/index.html");
?>

そのため、最後にindex.htmlを持つURLが1つだけ取得されます-/ blog /にアクセスしようとすると、すべて/blog/index.htmlにリダイレクトされます

PHPをサポートしないホスティングでは、Javascriptを使用します。

<script type="text/javascript">
<!--
window.location = "http://www.example.com/blog/index.html";
//–>
</script>
0
Evgeniy