在多个域之间共享索引和 .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这个脚本。
希望对您有所帮助!
我在一些域中复制了索引和 .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这个脚本。
希望对您有所帮助!