Example.comにシングルサイトのWordpressがインストールされています。 www.example.comがexample.comのエイリアスになるようにDNSが設定されています。クライアントはユーザーにwwwを見てもらいたいと思っています。入力した場合はナビゲーションバーに表示されるので、これは重要です。
私は彼らのウェブサイトをcpanelを実行しているApacheサーバーでホストしました。 cpanelのドメインはexample.comに設定されています。私がワードプレスをインストールする前に、www.example.comと入力するとディレクトリが表示され、wwwはそのまま残りました。ナビゲーションバーで、とても素晴らしい。
私はワードプレスをインストールした後、しかし、WWW。削除されつつあります。私がリダイレクトトレースをしたとき私はこの奇妙な302リダイレクトを見つけました:
http://www.example.com
Status: 302 Found
Code: 302
Date: Thu, 24 Aug 2017 00:23:08 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
Location: https://example.com
Content-Length: 346
Connection: close
Content-Type: text/html; charset=iso-8859-1
Sslを強制するようにwordpressのhtaccessファイルを変更しましたが、これは301だと思いました。
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_Host} eq "example.com"
ErrorDocument 403 https://example.com
わかりました、何でも。だから私はコードのこのセクションを削除した、URLバーはまだwwwを保持していません。今回は301リダイレクトを取得します。
http://www.example.com
Status: 301 Moved Permanently
Code: 301
Date: Thu, 24 Aug 2017 00:35:22 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
X-Powered-By: PHP/5.6.16
Location: http://example.com/
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
私は他にどこを見るべきかわからない。 URLバーにwwwを保存させるには、cpanel、htaccess、またはwordpressで何をする必要がありますか。
WordPressダッシュボードで正規のホスト名(www
を使用)を設定する必要があります。[設定]> [一般]で、適切な[WordPressアドレス(URL)]および[サイトアドレス(URL)]プロパティを設定します。
あるいは、wp_config.php
およびWP_HOME
定数をそれぞれ定義することによって、これらの値をWP_SITEURL
内のハードコードにすることができます。
参照:
https://codex.wordpress.org/Changing_The_Site_URL
SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_Host} eq "example.com" ErrorDocument 403 https://example.com
ちょっとちょっとしたことですが、これはリダイレクトからHTTPSへの非常に回り道のある(お勧めできません)方法です。はい、これは301(永久)リダイレクトではなく、302(一時的)リダイレクトをトリガーします。 ErrorDocument
の副作用があるため、これはまったくリダイレクトするだけです。そしてそれはドキュメントルートにリダイレクトするだけです、要求されたURLは失われます。
このコードは、実際にはHTTP専用サイトへのアクセスをブロックし、403禁止をトリガーします。カスタム403の2番目の引数として絶対URLを設定しているので、ApacheはあなたのサイトのルートであるURLへの外部(302)リダイレクトを引き起こします。
サーバーの設定にアクセスできない場合、このリダイレクトは通常.htaccess
のmod_rewriteを使用して実現されます。例えば:
RewriteCond %{HTTPS} !on
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
これは.htaccess
内の既存のWordPressディレクティブをbeforeする必要があります。
WordPressで適切なホスト名を設定した後は、必要に応じて.htaccess
でHTTPSとwwwの両方のリダイレクトを処理できます(もう少し効率的です)。例えば:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} !www\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
テストする前にブラウザのキャッシュをクリアしてください。
私はwwwが必要です。ユーザーが最初に入力した場合にのみ保持されます。
特別な理由がない限り、これは一般的に悪い考えです。これを軽減するためにhead
セクションにrel="canonical"
タグを設定することはできますが、(両方のホストがインデックス付けされるのを防ぐために)プリファレンスを指定できますが、コンテンツの複製が作成される可能性があります。しかし、統計はそれらの間で分割されます。クッキーはどのように設定していますか? WWWと非WWW(ログイン、セッションなど)の間でクッキーを共有したい場合は、どのホストがアクセスされているかにかかわらず、クッキーがapexドメインに設定されていることを確認する必要があります。デフォルトの動作.
とにかく、HTTPをHTTPSにリダイレクトしたいがアクセスされたホスト(www、non-www、またはxyzエイリアス)を保持したい場合は、HTTP_Host
サーバー変数を参照できるので、これははるかに単純なリダイレクトです。例えば:
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Wordpressで正規のホスト名を変更すると、トラフィックはすべてwwwになります。この特定の使用例では、ユーザーがwwwとして入ってきた場合に限ります。トラフィックはwww URLを見続けるべきです。それ以外の場合は、入力したとおりにexample.comが表示されます。もう少し調べたところ、これを行う方法はwp_config.phpに次の行を追加することであることがわかりました。
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_Host']);
define('WP_HOME', 'http://' . $_SERVER['HTTP_Host']);
このコードの私の理解は、DNSとCpanelの両方でexample.comのエイリアスとして宣言されたURLは、URLが保存された状態でWordPressサイトに表示されるということです。
MrWhiteのSSLアドバイスに便乗するために、2つのURL(www付きとなし)を許可する必要があるという事実に対応するように、私は彼のコードを少し修正しました。
# Force SSL While Preserving www.#
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} www\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
# Force SSL for non-www. Traffic #
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} !www\.
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
3番目または4番目のetcエイリアスを追加する必要がある場合は、RewriteCondをより具体的にする必要があり、追加のRewriteブロックが必要になります。