Apache config में .htaccess फ़ाइलों को सक्षम करने के लिए sed का उपयोग करना


13

मैं एक बश स्क्रिप्ट के साथ उबंटू वैग्रैंट बॉक्स के प्रावधान को स्वचालित करने की कोशिश कर रहा हूं। सब ठीक है, लेकिन मुझे .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

जवाबों:


13

sed इस रूप में पैटर्न रेंज का समर्थन करता है:

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

उदाहरण के लिए:

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

यह वही है जिसे मैं देख रहा था!
कप्तानी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.