mod_rewrite
に次のApache2
ルールを適用して、www以外からwwwにリダイレクトしました。
RewriteEngine On
RewriteCond %{HTTP_Host} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
2つの質問があります:
1)ダブルスラッシュの問題があります:
それを修正するためのヒントはありますか?
2)私の構成はSEOに適していますか?
修正済み:
RewriteEngine On
RewriteCond %{HTTP_Host} ^mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com$1 [R=301,L]
なぜなら$1
デフォルトにはインデックスパスが含まれています/
RewriteRule ^\/?(。*)$ http://www.mydomain.com/$1 [R = 301、L]
実際には、次の理由で常に二重スラッシュがあります
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
rEQUEST_URI(一致している)には通常、開始スラッシュが含まれているという事実と組み合わされます。試すことができるのはRewriteRule ^(.*)$ http://mydomain.com$1
で、壊れたHTTPリクエストを送信しますGET foo HTTP/1.0
そしてApacheがそれを適切に処理するかどうかを確認します。
パターンにスラッシュを入れると、この問題が解決するはずです。
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
これは、ルートパスが/
であり、RewriteRule
で取得したものをすべて追加しているためです(最初のケースはが機能しないため条件に一致するため、書き換えは実行されません)。
あなたはこのようなことを試すことができます:
RewriteEngine On
RewriteCond %{HTTP_Host} ^mydomain\.com$ [NC]
# for the home page
RewriteRule ^/$ http://www.mydomain.com/ [R=301,L]
# for the rest of pages
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]