在多个域之间共享索引和 .htaccess 文件

Share index and .htaccess files between multiple domains

我在一些域中复制了索引和 .htaccess 文件,结构是:

/home/user1/public_html
    .htaccess
    index.php

/home/user2/public_html
    .htaccess
    index.php

        .
        .
        .

/home/userN/public_html
    .htaccess
    index.php

当我要更新这些文件时,非常头疼,我需要一个一个地做。我尝试创建软符号链接,但出现 500 内部错误。

有没有办法使用某些 Apache 或 Linux 功能来统一这些文件?我正在使用 CentOS、Apache 和 WHM/cPanel.

编辑 1

每个文件的恢复内容

index.php

<?php

$ini = parse_ini_file('../system/ini/app.ini');

require_once($ini['env_path'] . '/' . $ini['env_name'] . '/IniHandler.php');

$IniHandler = new IniHandler();

require_once($IniHandler->getFullEnvPath() . '/frontcontroller-site.php');

.htaccess

Options -Indexes

ErrorDocument 404 /errormessages/404.php

DirectoryIndex index.php?module=site&controller=Main&action=index

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^([a-z]+)/([A-Z]{1}[a-zA-Z]+)/([a-zA-Z]+)/?(.+)*$ /index.php?module=&controller=&action=&aux_get_vars= [QSA,L]

</IfModule>

考虑到您只需要更新特定的帐户,并且我想您已经知道这些帐户是哪些帐户,那么您可以使用一个简单的 bash 脚本来完成。您必须先创建一个数组,该数组包含应该修改的文件。

Bash 脚本示例:

#!/bin/bash
declare -a files=('/home/cpaneluser/public_html/.htaccess' '/home/cpaneluser1/public_html/.htaccess' '/home/cpaneluser2/public_html/.htaccess' '..' '..');
for i in "${files[@]}"
do
    echo "abc" >> $i # add abc text at the end of the file
    sed -i '9i9 This is Line 9' $i # add This is Line 9 on line 9 in the text file
done

上面的脚本会将文本 abc 添加到以下文件中:

- /home/cpaneluser/public_html/.htaccess
- /home/cpaneluser1/public_html/.htaccess
- /home/cpaneluser2/public_html/.htaccess

当然这只是一个通用示例,但我相信这是一个很好的起点。构建初始文件列表可能需要一些时间,但无论如何您都必须定义这些文件。然后你可以根据你的需要modify/adapt这个脚本。

希望对您有所帮助!