使用 sed 在 Apache 配置中启用 .htaccess 文件

使用 sed 在 Apache 配置中启用 .htaccess 文件

我正在尝试使用 Bash 脚本自动配置 Ubuntu Vagrant 框。一切顺利,但我在配置 Apache 以允许.htaccess文件覆盖时遇到了困难。在我的配置文件中,有以下块:

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

我所需要做的就是AllowOverride None用替换AllowOverride all。这似乎是 的任务sed,但是这个配置文件中还有其他<Directory>块,我不想允许覆盖。

当特定字符串出现在两个其他特定字符串之间时,如何使用 sed 将特定字符串替换为新字符串?

换句话说,AllowOverride None当它出现在<Directory /var/www/>和之间时我该如何替换</Directory>

我可以使用以下命令来获取我感兴趣的块:

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

答案1

sed支持以下形式的模式范围:

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

例如:

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

相关内容