各/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

別のオプションはシェルスクリプトを使用することです。

#!/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 ファイルに必要な行を追加します。私は一つを使う先頭ここのドキュメントこのように、シェルは何も解釈するのに「助けにはならない」ことはありません。

前の内容と追加された内容を空行で区切りたい場合は、<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.書き込み(行)
    f.閉じる()

関連情報