1

次の 2 つの URL で動作する Web サイトがあります。

http://sub.domain.com/

http://www.sub.domain.com/

URLを統一してwwwなしのバージョンのみを使用したいです。ただし、Google には、特定の記事 (パスの URL) にリンクしている www を含むバージョンへのリンクもあります。例えば:

http://www.sub.domain.com/folder/some.html

アドレスから www プレフィックスを削除し、記事へのパスを保持するように、訪問者をリダイレクトしたいと考えています。上記の例を使用して、URL を次のように書き換えます。

http://sub.domain.com/folder/some.html

明確にしましょう:

私が欲しい:

http://www.sub.domain.com -> http://sub.domain.com

http://www.sub.domain.com/folder/some.html -> http://sub.domain.com/folder/some.html

ルールを適用した後:

RewriteEngine on

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

私は得る:

http://www.sub.domain.com -> http://sub.domain.com

^^それは正常に動作します:)

http://www.sub.domain.com/folder/some.html -> http://sub.domain.com

^^それは間違って動作します:(

私の他の現在の htaccess ルール: http://pastebin.com/C74u7MGL

4

2 に答える 2

1

通常、よく見かける ^(.*)$ や $1 の代わりに REQUEST_URI を使用することをお勧めします。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^ http://sub.domain.com%{REQUEST_URI} [R=301,L]

利点:

  • REQUEST_URI は、末尾のスラッシュが欠落しているパスを正しく保持します (これは $1 では行われません)。したがって、完全にolddomain.com/pathリダイレクトされます。newdomain/path$1 のみolddomain.com/path/がリダイレクトされnewdomain/path/ますが、末尾のスラッシュが欠落しているパス セグメントは削除されます。
  • REQUEST_URI は、$1 ソリューションで追加の QSA フラグを必要とするすべてのクエリ文字列を正しく保持します。
于 2016-04-13T13:46:57.503 に答える
0

.htaccessこれをWeb ルート/ディレクトリに追加します。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
于 2013-08-16T11:54:15.187 に答える