質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

1回答

9688閲覧

x-redirect-by: WordPress、wwwありURLからwwwなしURLへのリダイレクトはどこで設定している?

teraha

総合スコア59

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

1クリップ

投稿2021/03/31 00:54

編集2021/03/31 01:08

CentOS、nginx、WordPressを使っています。

/etc/nginx/conf.d/xxx_http.conf
/etc/nginx/conf.d/xxx_ssl.conf
などのファイルを使って、
httpからhttpsにリダイレクトしたり、
https://www.mydomain.comを
https://mydomain.com
にリダイレクトしたりしています。

しかし、wwwありからwwwなしのURLへのリダイレクト設定をnginxの.confファイルから削除した場合でも、リダイレクトが勝手に行われることに気づきました。

Chromeのデベロッパーツールで確認したところ
Response Headerのところに
x-redirect-by: WordPress
というのを発見しました。

どうやら、WordPressの機能でwwwありからwwwなしにリダイレクトをしているようです。

これだと、nginx側の設定によっては
nginxで、wwwなし→wwwありにリダイレクトして
wordpressで、wwwあり→wwwなしにリダイレクトして
リダイレクトが無限ループになるんじゃ?

「WordPress リダイレクト」でGoogle検索すると
.htaccessの情報ばかり出てくるけどapacheの制御ファイルなので、nginxには関係なさそう。

/wp-includes/pluggable.php
というファイルの中にX-Redirect-Byという文字を見つける。
しかし、wwwありからwwwなしにURLを書き換えるという作業をやっているようには見えない。
コードが読解できていないだけなのか、そもそもこのファイルではないのか判断できず。

そこで、質問です。

WordPressのwwwありからwwwなしのURLへリダイレクトする機能、
オン/オフを切り替えたり、
「wwwあり→wwwなし」ではなく、「wwwなし→wwwあり」に切り替えたり、
設定を変更するには、どこをどういじればいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukky1201

2021/03/31 01:48

リダイレクトするプラグインは利用していませんか。
teraha

2021/03/31 11:16

WordPressインストール直後のプラグインもテーマも触っていない状態でリダイレクトが発生しています。
guest

回答1

0

ベストアンサー

WordPressはredirect_canonicalが有効になっていたら
管理画面で登録されているホームURLを基準に
各頁のパーマリンクURLなどにリダイレクトされます

実際にリダイレクト処理を行いheaderに
X-Redirect-By:つけてるのはwp_redirectです

投稿2021/03/31 01:55

KazuhiroHatano

総合スコア7819

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teraha

2021/03/31 11:36

/wp-includes/canonical.phpというファイルの中に下記を見つけました。 // www.example.com vs. example.com $user_home = parse_url( home_url() ); if ( ! empty( $user_home['host'] ) ) { $redirect['host'] = $user_home['host']; } parse_url( home_url() ) でデータベースのwp_optionsテーブルにあるsiteurlの値を持ってきているみたいです。 wwwを付加するとか、wwwを取り除くとかじゃなく、 「ホスト名をsiteurlの値で上書き」 という単純な動作ですね。 この後、細かい条件判定と処理が続くんですが ・siteurlにwwwありURLを書いていたら、wwwなし→wwwありURLにリダイレクトされる ・siteurlにwwwなしURLを書いていたら、wwwあり→wwwなしURLにリダイレクトされる と覚えておけば大丈夫そうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問