0

私はhtaccessルールを書くのが初めてです。Web サイトの URL をできるだけシンプルにしたい。

ルートドメインの /home/ ディレクトリを「マップ」したいとしましょう。したがって、http://www.domain.comは、 URL を変更せずに /home/ ディレクトリのコンテンツを表示します。

さらに、ユーザー / google にhttp://www.domain.com/home/にアクセスしてほしくないので、誰かがその URL にアクセスした場合、ルート ドメインhttp:/にリダイレクトしたいと考えています。/www.domain.com .

Google が同じ重複コンテンツを持つ両方のディレクトリをインデックスに登録していることがわかります。 http://www.domain.com http://www.domain.com/home/

これを止めるために私にできることはありますか?robots.txt は悪い習慣だと聞いたので、使いたくありません。

RewriteEngine on
RewriteBase /

# Redirect /home/ dir to 'www.domain.com'
#RewriteCond %{REQUEST_URI} ^/home/$ [NC]
#RewriteRule ^(.*)$ / [R=301,L]

# Show /home/ dir for 'www.domain.com'
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /home/$1 [L]

このコードのすべての行を有効にすると、終わらないリダイレクト ループが発生します。

また、「seo フレンドリー」な URL を追加しようとすると、同じ問題に直面しています。「 http://www.domain.com/thread/thread-name/」を「http://forum.domain.com/thread-name/ 」にマップしようとしていますが、問題なく動作しますが、同じコンテンツを表示する 2 つの重複した URL がまだあります。

検索エンジンが重複したコンテンツをインデックスに登録しないようにするためのベスト プラクティスを知りたいです。404にリダイレクトする必要がありますか?多くのファイル/ディレクトリの組み合わせがあり、私の目的では機能しないため、これを実装するために robots.txt を使用したくありません。

どうもありがとう!

4

1 に答える 1

2

これの代わりに:

# Redirect /home/ dir to 'www.domain.com'
#RewriteCond %{REQUEST_URI} ^/home/$ [NC]
#RewriteRule ^(.*)$ / [R=301,L]

試す:

# Redirect /home/ dir to 'www.domain.com'
RewriteCond %{THE_REQUEST} \ /+home/([^\?\ ]*)
RewriteRule ^ /%1 [R=301,L]
于 2014-10-08T01:17:52.567 に答える