Sử dụng sed để kích hoạt các tệp .htaccess trong cấu hình Apache


13

Tôi đang cố gắng tự động hóa việc cung cấp hộp Ubuntu Vagrant với tập lệnh Bash. Tất cả đều ổn, nhưng tôi gặp khó khăn với việc cấu hình Apache để cho phép ghi đè từ .htaccesscác tệp. Trong tập tin cấu hình của tôi, có khối sau:

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

Tất cả tôi cần làm là thay thế AllowOverride Nonebằng AllowOverride all. Đây có vẻ là một nhiệm vụ cho sed, nhưng có các <Directory>khối khác trong tệp cấu hình này mà tôi không muốn cho phép ghi đè.

Làm cách nào tôi có thể sử dụng sed để thay thế một chuỗi cụ thể bằng một chuỗi mới, khi chuỗi cụ thể đó xảy ra giữa hai chuỗi cụ thể khác?

Nói cách khác, làm thế nào tôi AllowOverride Nonechỉ có thể thay thế khi nó xuất hiện giữa <Directory /var/www/></Directory>?

Tôi có thể sử dụng lệnh sau để lấy khối mà tôi quan tâm:

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

Câu trả lời:


13

sed hỗ trợ phạm vi mẫu trong mẫu này:

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

Ví dụ:

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

Đây là những gì tôi đang tìm kiếm!
captainblack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.