Usando sed para habilitar arquivos .htaccess na configuração do Apache


13

Estou tentando automatizar o provisionamento de uma caixa do Ubuntu Vagrant com um script Bash. Tudo está bem, mas estou tendo dificuldades em configurar o Apache para permitir substituições de .htaccessarquivos. No meu arquivo de configuração, existe o seguinte bloco:

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

Todos necessidade I a fazer é substituir AllowOverride Nonecom AllowOverride all. Isso parece ser uma tarefa para sed, mas existem outros <Directory>blocos neste arquivo de configuração em que eu não quero permitir a substituição.

Como posso usar sed para substituir uma sequência específica por uma nova, quando essa sequência específica ocorre entre duas outras sequências específicas?

Em outras palavras, como posso substituir AllowOverride Noneapenas quando aparece entre <Directory /var/www/>e </Directory>?

Posso usar o seguinte comando para obter o bloco em que estou interessado:

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

Respostas:


13

sed suporta intervalos de padrões neste formato:

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

Por exemplo:

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

Era isso que eu estava procurando!
captainblack
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.