Utilisation de sed pour activer les fichiers .htaccess dans la configuration Apache


13

J'essaie d'automatiser l'approvisionnement d'une boîte Ubuntu Vagrant avec un script Bash. Tout va bien, mais j'ai du mal à configurer Apache pour autoriser les remplacements à partir des .htaccessfichiers. Dans mon fichier de configuration, il y a le bloc suivant:

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

Tout ce que je dois faire est de le remplacer AllowOverride Nonepar AllowOverride all. Cela semble être une tâche pour sed, mais il y a d'autres <Directory>blocs dans ce fichier de configuration où je ne veux pas autoriser la substitution.

Comment puis-je utiliser sed pour remplacer une chaîne spécifique par une nouvelle chaîne, lorsque cette chaîne spécifique se produit entre deux autres chaînes spécifiques?

En d'autres termes, comment puis-je remplacer AllowOverride Noneuniquement lorsqu'il apparaît entre <Directory /var/www/>et </Directory>?

Je peux utiliser la commande suivante pour obtenir le bloc qui m'intéresse:

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

Réponses:


13

sed prend en charge les plages de motifs sous cette forme:

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

Par exemple:

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

C'est ce que je cherchais!
captainblack
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.