在每个 /public_html/.htaccess 文件中添加行

在每个 /public_html/.htaccess 文件中添加行

有没有办法通过 ssh 批量执行 .htaccess 编辑?

我有多个网站,其内容如下:

/home/user/website1/public_html/.htaccess
/home/user/website2/public_html/.htaccess
...

并且想在文件底部添加(不仅仅是替换整个 .htaccess )几个新行,例如:

<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>

有没有办法做到这一点?

答案1

另一种选择是使用 shell 脚本:

#!/bin/sh
for htaccess in home/user/website*/public_html/.htaccess
do
  cat >> "$htaccess" << 'EOF'
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>
EOF
done

该脚本循环遍历 /home/user 下以“website”开头的每个目录,并将所需的行附加到 public_html/.htaccess 文件中。我用一个此处文档这样 shell 就不会“帮助”解释任何内容。

如果您想用一个空行分隔先前的内容和添加的内容,只需将其插入到<Filesmatch您要插入的部分之前(紧接该cat行之后)。

答案2

就在这里。只需要写一些代码,ssh后在服务器上运行即可。例如,在Python中:

# 你想要添加的行
行=“”“
<FilesMatch ".+\.php$">
要求全部拒绝
</文件匹配>
”“”

# 需要追加的文件
文件=[]
files.append('/home/user/website1/public_html/.htaccess')
files.append('/home/user/website2/public_html/.htaccess')

# 将行追加到文件中
对于文件中的文件:
    f=打开(文件,'ab')
    f.write(行)
    f.close()

相关内容