web-dev-qa-db-ja.com

別のサーバーでホストされているサブディレクトリにWordPressを実装する方法は?

私は、独自のドメインにカスタムeコマースWebサイトを既に設定しているクライアントと協力しています。 example.com

ドメインのサブディレクトリでWordPressブログをホストします。 example.com/blogセキュリティの問題により、サイトの残りの部分と同じサーバーでWordPressをホストすることはできません。

WordPressブログをホストする別のサーバーをセットアップし、一時的なサブドメインURLを割り当てました。

Example.com/blogがサーバーからWordpressサイトを提供するようにするにはどうすればよいですか?リダイレクトは必要ありません。すべてのブログが「/ blog」サブディレクトリ内でホストされているように見せたいです。 WordPressデータベースにはどのURLを入れますか?サブディレクトリをどのようにリダイレクトする必要がありますか?

人々がサブドメインの使用を推奨していることは知っていますが(これは現在持っているものです)、クライアントはより良いSEOパフォーマンスのためにサブディレクトリの使用を明確に要求しています。

3
J. Purcell

サイトを別のサーバーでホストしたいので、サブドメインは確かに最も簡単なオプションです。これは、ホスト名が単一の場所にしか解決できないためです。変更されたURLからのSEOが心配な場合は、代わりにサブドメインへのリダイレクトを検討できます。

ただし、サブドメインを回避することを特に検討しているため、この回答の残りの部分では、その方法に焦点を当てます。

/ blog /を別のサーバーから提供する場合は、リバースプロキシを作成する必要があります。現在のWebサーバーへのアクセスレベルに応じて、最適なオプションはリバースプロキシを作成することです。次の手順では、実装およびトラブルシューティングを行うためにサーバーの変更に関するスキルが必要になる場合があります。

Apacheを使用する

Apacheを使用していると仮定すると、次のようなルールを追加できます。

ProxyPass /blog/ http://example.com/blog
ProxyPassReverse /blog/ http://example.com/blog

これをVirtualHostエントリ、またはhttpd.confのどこかに配置できます。これはmod_proxyがインストールされており、Apacheの再起動が必要であることを前提としています。

人気のあるcPanelを使用している場合、.confで終わる名前のファイルを配置する場所をここで確認できます。 https://documentation.cpanel.net/display/EA/Modify+Virtualhost+Containers + With + Include + Files

CPanelを使用している場合は、mod_proxyを含める必要があるので、心配する必要はありませんが、/scripts/rebuildhttpdconfを実行してからApacheを再起動する必要があります。

これにより、別の場所に接続して、現在のサーバーを介して配信する実際のブログページを取得できます。

WordPressの問題は、多くのCMSと同様に、アクセスに使用するURLについて非常にうるさいことです。つまり、サブドメインに接続する場合、siteurlが一致しなかった場合、WordPressは404を提供します。また、WordPressは多くの場合、siteurlを含むリダイレクトを出力します。したがって、リモートサーバーに接続している場合でも、サーバーに同じURLに接続していると思わせる必要があります。トリッキーな部分は、サーバーのhostsファイルを変更できるようにするにはルートアクセスも必要になるということです。 Linuxサーバーでは、/etc/hosts/にあり、次のような行を追加できます。

123.123.123.123 example.com

123.123.123.123は、ブログをホストするサーバーのIPです。もちろん、これはそのサーバー上の他に何もexample.comへの接続を期待していない場合にのみ機能します。

Nginxを使用する

あまり一般的ではないNginxを使用している場合は、これを少し簡単に行うことができます。

upstream blogbackend {
    server 123.123.123.123:80;
}

location /blog {
    proxy_pass http://blogbackend;
}

NginxではバックエンドのIPを指定できるため、hostsファイルを操作する必要はありません。

サイトのURL

どちらの場合も、ブログのあるリモートサーバーはhttp://example.com/blogのコンテンツを提供するように構成する必要があり、$ prefixsiteurlテーブルのhomeoptionsの両方でoption_valueになります。元のURLである場合、変更する必要はありません。変更する必要がある場合は、アップロードされた画像など、ハードコードされたURLをチェックする準備をしてください。

結論

この解決策は少し面倒で、うまくいかないことがたくさんあります。ただし、おそらくカールを使用して、PHPプロキシを介して/ blog /にコンテンツを提供する次の選択肢よりも、おそらくよりクリーンです。これが、標準的なアプローチが単にサブドメインを使用することになる理由です。

3
DKing

サーバーにはIPアドレスがあるため、それを取得して、ドメインのDNSがホストされている場所にサブドメインを作成できます。 blog.domain.comを作成する場合は、サーバーのIPアドレスを指定できます。

0
Dynadot