人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

htaccessに関しての質問です。
SEOのために、 wwwありとwwwなしそれぞれインデックスさせないように、.htaccessを設定しましょう。という話があります。

よくあるサンプルの指定では、

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.sample\.com [NC]
RewriteRule ^(.*)$ http://sample.com/$1 [R=301,L]

ドメイン名を毎回記述しないといけません。

こちら、ドメイン名を毎回記述せずに、「wwwあり」から、「wwwなし」に転送する書き方があるのではないかと探しております。

そのような方法はないのでしょうか。

●質問者: tomohirof
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

RewriteCond の正規表現の後方参照を %1、%2 で使えます。

RewriteRule Directive

...
In addition to plain text, the Substition string can include

  1. back-references ($N) to the RewriteRule pattern
  2. back-references (%N) to the last matched RewriteCond pattern
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule


以下のような感じでできるんじゃないでしょうか。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]


質問にある「よくあるサンプル」に合わせましたが、RewriteRule の ^(.*)$ は冗長です。
カッコをつけなくても、$0 で後方参照できますし、

RewriteRule .* http://%1/$0 [R=301,L]

サーバ変数の REQUEST_URI を使えば、後方参照は不要です。

RewriteRule ^ http://%1/%{REQUEST_URI} [R=301,L]

# 速度は変わらないらしいんですけどね

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ