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


13

我正在尝试使用Bash脚本自动设置Ubuntu Vagrant框。一切都很好,但是我在配置Apache以允许覆盖.htaccess文件方面遇到困难。在我的配置文件中,有以下块:

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

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

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

换句话说,AllowOverride None只有当它出现在<Directory /var/www/>和之间时,才可以替换</Directory>吗?

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

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

Answers:


13

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

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

例如:

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

这就是我想要的!
captainblack
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.