web-dev-qa-db-ja.com

1つのホームディレクトリに複数のwp-config.phpファイル

セキュリティのためにwp-config.phpを1つ上のディレクトリレベル、つまりpublic_htmlより上のディレクトリに移動することができます(Webホストによっては、homeまたはユーザー名と呼ばれることもあります)。

http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.phpによると、 "あなたはWordPressのインストールの上のディレクトリにwp-config.phpファイルを移動することができます - そしてそれをWPサイトのwp-config.phpファイルで行いました。

しかし、public_htmlのそれぞれのフォルダに複数のWPサイトを配置するにはどうすればよいでしょうか。 WPサイトごとに、ホームディレクトリにあるwp-config1.phpやwp-config2.phpなどのように、複数のwp-config.phpファイルの名前を変更する方法はありますか?そして、それぞれのWP installが自分自身のwp-config.phpファイルを見つけることができるようにするには、.htaccessまたは他の方法を使用しますか?

私が思う一つの解決策はマルチサイトですが、それはこの場合不可能です。

1
markratledge

メインのwp-config.phpを1つ使用し、ホストの名前に従って他の名前を指定します。

  • example.com.config.php
  • example.net.config.php
  • 等々。

あなたのメインのwp-config.phpに書いてください:

$current_config = __DIR__ . '/' . $_SERVER['HTTP_Host'] . '.config.php';
if ( file_exists( $current_config )
    require_once $current_config;
1
fuxia

これを行うには2つの方法があります。あなたの質問から、それはあなたが現在この構造を持っているように思えます:

/home
... /public_html
... ... wp-config.php <- for site1
... ... /site1
... ... ... /wp-admin
... ... ... /wp-content
... ... ... /wp-includes
... ... /site2
... ... ... /wp-admin
... ... ... /wp-content
... ... ... /wp-includes
... ... ... wp-config.php <- for site2

また、他のサイトのwp-config.phpファイルもサイトルート外に移動します。すべてのサイトがwp-config.phpを含めることを試みるが、すべてが同じものを使用することはできないため、これはいくつかの競合を引き起こすことを指摘するのは正しいです。

もっと大きな問題は、wp-config.site1.phpwp-config1.phpや他のバリエーションを使って物事を分離するためにコアをハッキングすることができないことです。

wp-load.phpのコードを見ると、これがわかります。

if ( file_exists( ABSPATH . 'wp-config.php') ) {

    /** The config file resides in ABSPATH */
    require_once( ABSPATH . 'wp-config.php' );

} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {

    /** The config file resides one level above ABSPATH but is not part of another install*/
    require_once( dirname(ABSPATH) . '/wp-config.php' );

}

WordPressは現在の場所を越えて1つのディレクトリだけを探し、wp-config.phpのみを探します。

あなたの最善の策は、自分自身にいくつかの分離を与えるためにさらに一段階上にすべてをプッシュすることです。それから、Apache vhostsファイルを新しいフォルダの場所に向けます。それで、あなたのディレクトリ構造を次のように設定してください。

/home
... /public_html
... ... /site1
... ... ... wp-config.php <- for site1
... ... ... /wordpress
... ... ... ... /wp-admin
... ... ... ... /wp-content
... ... ... ... /wp-includes
... ... /site2
... ... ... wp-config.php <- for site2
... ... ... /wordpress
... ... ... ... /wp-admin
... ... ... ... /wp-content
... ... ... ... /wp-includes

あなたのvhostsファイルはwww.site1.comの代わりに/home/public_html/site1/wordpress/home/public_html/siteに指すでしょう。はい、それはもう少し複雑ですが、あなたがこの問題を避けることができる唯一の方法です。

0
EAMann

あなたはこれをすることができます:

すべてのwp-config.phpファイルをインストールより上のレベルにコピーしてから、それらをmysite-wp-config.phpのような名前に変更してから、実際のインストールの中で、wp-config.phpというファイルを作成しますそのファイルの中:

<?php
    include_once(‘/pathtoconfigfile/mysite-wp-config.php’);
?>

これは理論です、私はそれをテストしていません。

0