Utilizzo di sed per abilitare i file .htaccess nella configurazione di Apache


13

Sto cercando di automatizzare il provisioning di una scatola Ubuntu Vagrant con uno script Bash. Va tutto bene, ma ho difficoltà a configurare Apache per consentire le sostituzioni dai .htaccessfile. Nel mio file di configurazione, c'è il seguente blocco:

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

Tutto quello che devo fare è sostituirlo AllowOverride Nonecon AllowOverride all. Questo sembra essere un compito per sed, ma ci sono altri <Directory>blocchi in questo file di configurazione in cui non voglio consentire l'override.

Come posso usare sed per sostituire una stringa specifica con una nuova stringa, quando quella stringa specifica si verifica tra altre due stringhe specifiche?

In altre parole, come posso sostituire AllowOverride Nonesolo quando appare tra <Directory /var/www/>e </Directory>?

Posso usare il seguente comando per ottenere il blocco che mi interessa:

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

Risposte:


13

sed supporta intervalli di pattern in questo modulo:

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

Per esempio:

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

Questo è quello che stavo cercando!
captainblack,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.