Apache configでsedを使用して.htaccessファイルを有効にする


13

Bashスクリプトを使用してUbuntu Vagrantボックスのプロビジョニングを自動化しようとしています。すべて順調ですが、.htaccessファイルからのオーバーライドを許可するようにApacheを構成するのは困難です。私の設定ファイルには、次のブロックがあります。

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

行うには、すべての私の必要性は置き換えであるAllowOverride NoneAllowOverride all。これはのタスクのようですが、この設定ファイルにはオーバーライドを許可したくないsed他の<Directory>ブロックがあります。

特定の文字列が他の2つの特定の文字列の間にある場合、sedを使用して特定の文字列を新しい文字列に置き換えるにはどうすればよいですか?

つまり、とのAllowOverride None間にある場合にのみ置き換えることができますか?<Directory /var/www/></Directory>

次のコマンドを使用して、興味のあるブロックを取得できます。

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default

回答:


13

sed この形式のパターン範囲をサポートします:

sed '/startpattern/,/endpattern/ <sed-commands>' file

例えば:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf

これは私が探していたものです!
キャプテンブラック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.