htaccessに関しての質問です。

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

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

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

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

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

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

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/06/05 18:20:27
  • 終了:2015/06/08 16:46:30

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4537ベストアンサー獲得回数18882015/06/07 15:10:19

ポイント100pt

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]

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません