一个主目录中有多个wp-config.php文件

时间:2012-02-13 作者:markratledge

可以移动wp配置。php提高了一个目录级别的安全性,即进入public\\u html上方的目录(有时称为home或用户名,具体取决于web主机)。

“您可以将wp-config.php文件移动到WordPress安装上方的目录”,根据http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php 我已经用一个WP站点的WP配置做到了这一点。php文件。

但是,如何在public\\u html中使用自己文件夹中的多个WP站点来做到这一点?是否有方法重命名多个wp配置。php文件-类似于wp-config1。php和wp-config2。php等-在每个不同WP站点的主目录中?和使用。htaccess或其他一些方法,使每个WP安装能够找到自己的WP配置。php文件?

我想一个解决方案是多站点,但在这种情况下不可能。

4 个回复
SO网友:fuxia

使用一个mainwp-config.php 并根据主机名称命名其他主机:

示例。com。配置。php示例。网配置。php等等在您的主要wp-config.php 写入:

$current_config = __DIR__ . \'/\' . $_SERVER[\'HTTP_HOST\'] . \'.config.php\';
if ( file_exists( $current_config ) )
    require_once $current_config;

SO网友:John Ching

Sterling上面的方法很有吸引力,因为代码很简单,但对我来说不起作用。Fuxia的方法假设了不同的域名,这在我的情况下是不一样的。我的案例是一个域名下的多个WP安装/实例。因此,我结合了他们的两种方法,提出了以下对我有效的方法:

复制所有wp配置。php文件,然后将其重命名为类似mysite wp config的名称。然后在实际安装中,可以有一个名为wp config的文件。php然后在该文件中执行以下操作:

<?php
$current_config = \'/pathtoconfigfile/mysite-wp-config.php\'; if ( file_exists( 
$current_config ) ) require_once $current_config;
?>
希望这对某人有帮助。

SO网友:EAMann

有两种方法可以做到这一点。从你的问题来看,听起来你目前有这样的结构:

/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将只查找超过其当前位置的一个目录,并且只查找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. 是的,这有点复杂,但唯一可以避免这个问题的方法是。

SO网友:Sterling Hamilton

您可以这样做:

复制所有wp配置。php文件,然后将其重命名为类似mysite wp config的内容。然后在实际安装中,可以有一个名为wp config的文件。php然后在该文件中执行以下操作:

<?php
    include_once(‘/pathtoconfigfile/mysite-wp-config.php’);
?>
这是一个理论,我没有测试过。

结束