212

私は .htaccess ファイルにこれを持っています:

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

しかし、ルート上のファイルにアクセスするたびに、http://example.com/robots.txtにリダイレクトされhttp://www.example.comrobots.txt/ます。

に正しくリダイレ​​クトされるようにこれを修正するにはどうすればよいhttp://www.example.com/robots.txtですか?

4

13 に答える 13

424

構成を次のように変更します (スラッシュを追加します)。

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

または、以下に概説するソリューション ( @absiddiqueLiveによって提案された) は、どのドメインでも機能します。

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

http と https をサポートし、プロトコルの選択を維持する必要がある場合は、次のことを試してください。

RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]

置き換える場所logincheckout.phpまたは HTTPS をサポートする必要がある任意の URL。

しかし、これは悪い考えだと思います。理由については、この回答をお読みください

于 2012-08-21T08:09:31.820 に答える
107

https と http をサポートする正しいソリューションは次のとおりです。

# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

UPD .: のようなドメインの場合.co.ukは、置き換えます

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+\.[^.]+$
于 2014-11-28T08:21:08.990 に答える
88
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

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

https の場合

RewriteCond %{HTTPS}s ^on(s)|

RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
于 2014-03-10T12:08:41.370 に答える
26

次の例は、sslssl の両方で機能し、 http と https を管理するために 1 つのルールのみを使用するため、はるかに高速です。

RewriteEngine on


RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

【テスト済み】

これによりリダイレクトされます

http

https

于 2016-04-23T07:26:35.653 に答える
3

.htaccess ファイルに次のコードを追加します。

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

URL リダイレクトのチュートリアルは、ここにあります - Redirect non-www to www & HTTP to HTTPS using .htaccess file

于 2015-10-28T11:16:13.633 に答える
3

この構成は、SSL が構成された bitnami wordpress で機能しました。

ファイル /opt/bitnami/apps/wordpress/conf/httpd-app.conf の「RewriteEngine On」の下に以下を追加しました

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
于 2017-02-23T00:19:05.573 に答える
2
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]

これにより、WWW で開始されていないドメインがリダイレクトされます。すべてのサブドメインがリダイレクトされるわけではありません。

それは便利です。

于 2015-01-19T19:35:51.577 に答える
2

一番上の回答は、非 www を www (例: mysite.com -> www.mysite.com ) に正常にリダイレクトすると思いますが、ワイルドカード サブドメインを考慮していないため、次のようになります。

random.mysite.com -> www.random.mysite.com

HTTPSあり/なしのソリューションは次のとおりです

HTTP

RewriteEngine On

RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301] 

HTTP/HTTPS

RewriteEngine On

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]

RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]

*注: 現在テストする証明書がないため、https をテストしていませんが、誰かが私が持っているものを検証または最適化できる場合、それは素晴らしいことです.

于 2015-02-10T09:03:20.143 に答える
-2

.htaccess に書き込みます:)

## Redirect from non-www to www (remove the two lines below to enable)
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
于 2014-07-03T01:55:37.977 に答える