.Htaccess फ़ाइल में लंबी लाइन को तोड़ें


10

मैं अपनी .htaccess फ़ाइल में एक कंटेंट-सिक्योरिटी-पॉलिसी हेडर सेट कर रहा हूं, और यह एक बहुत लंबी सिंगल लाइन बन गया है, जो मैनेज करने के लिए परेशान है। क्या इस लाइन को और अधिक प्रबंधनीय सबस्ट्रिंग में तोड़ने का कोई तरीका है?

एक तुच्छ उदाहरण के रूप में, मैं एक हेडर की तरह सेट कर रहा हूँ

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"

मैं (स्पष्ट ब्रेकिंग समस्याओं के बिना) अपने विशिष्ट मामले को कुछ इस तरह से पूरा कर सकता हूं

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"

लेकिन यह स्ट्रिंग में अल्पविराम सम्मिलित करेगा, इसलिए मैं अभी भी उत्सुक था अगर एक बेहतर जवाब था जो आम तौर पर लागू किया जा सकता था, बिना प्रतिक्रिया के अतिरिक्त वर्णों को जोड़कर।

आदर्श क्या होगा यदि कुछ सुरीले चरित्र थे जिन्हें मैं स्ट्रिंग को छोटे भागों में तोड़ने के लिए उपयोग कर सकता था, जैसे

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"

या

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"

या

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"

वैकल्पिक रूप से, अगर मैं किसी प्रकार का चर सेट कर सकता हूं और कुछ करने के लिए उनकी सामग्री को डंप कर सकता हूं

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b

यह भी अधिक प्रबंधनीय होगा।

इसी तरह का एक विषय था जो नगनेक्स के लिए आया था और निष्कर्ष सिर्फ लंबी लाइनों के साथ रहने के लिए था (वे एक लंबे रेगेक्स के साथ काम कर रहे थे, इसलिए एपेंड समाधान काम नहीं करेगा); क्या यह अपाचे के लिए भी मामला है?


क्या आपके प्रत्येक सब्सट्रिंग के बाद होल्डिंग शिफ्ट और प्रेस एंटर करेंगे?
StixO

@StixO नहीं, यह समस्या संबंधित फ़ाइलों में एपर्स के पार्स करने के तरीके से संबंधित है। आम तौर पर (आमतौर पर एचटीएमएल) संपादक इस तरह के शॉर्टकट का उपयोग लाइन ब्रेक (जैसे, <br />) और पैरा ब्रेक (</ p>) के बीच अंतर करने के लिए करेंगे। यह मार्कअप प्रारूप के पार्स और संपादक होने पर निर्भर करेगा। Apache conf फाइलें शुद्ध पाठ हैं, और जैसे कि एक लाइन के बीच कोई अंतर नहीं है एक पैराग्राफ (संशोधक की परवाह किए बिना, एक एकल, सिस्टम-निर्भर गाड़ी-रिटर्न चरित्र जैसे \ n या \ r) का उत्पादन करता है।
MaxPRafferty

जवाबों:


14

निम्नलिखित काम करना चाहिए:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"

मैंने यह परीक्षण किया और प्राप्त किया Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
कास्परड

1
@kasperd को आपको चलाने की जरूरत हैa2enmod headers
MaxPRafferty

@BazzaDP दिलचस्प! मुझे उम्मीद है कि यह सर्वर को बची हुई नई लाइन भेजने का कारण बनेगा, लेकिन ऐसा लगता है कि यह जिस तरह से मैं चाहता हूं, उसे संक्षिप्त करता है और ग्राहकों के दृष्टिकोण से अस्वीकार्य है।
मैक्सपराफर्टी

1
वाह, वास्तव में, जाहिर है आप इस तरह से किसी भी व्हाट्सएप चरित्र से बच सकते हैं। साथ ही \ <टैब> के साथ काम करने की पुष्टि की। .htaccess इतना अच्छा कभी नहीं देखा होगा!
मैक्सपराफेरी 20

1
हुह, यहां तक ​​कि regex को तोड़ने के लिए काम करता है! @BazzaDP, आप इस उत्तर को उस nginx प्रश्न पर छोड़ना चाह सकते हैं जिसका मैंने उल्लेख किया था, वहां भी काम कर सकता है।
मैक्सप्रफैर्टी

5

हां - बैकस्लैश एक लाइन- कंटीन्यूएशन के रूप में काम करता है । यह अपाचे 2.4 के दस्तावेज के भीतर दफन है [ https://httpd.apache.org/docs/2.4/configuring.html#page-header] पर

महत्वपूर्ण नियम:

  1. एक पंक्ति के भीतर व्हाट्सएप ठीक है, अर्थात। टैब और रिक्त स्थान की कोई भी संख्या;
  2. अंतिम को छोड़कर सभी पंक्तियों पर अंतिम वर्ण बैकस्लैश होना चाहिए; <
  3. अंतिम पंक्ति को बैकस्लैश के साथ समाप्त नहीं करना चाहिए ;
  4. अपाचे टिप्पणी चरित्र (#) का उपयोग एक पंक्ति पर टिप्पणी करने के लिए नहीं किया जा सकता है।

यदि इन नियमों का पालन नहीं किया जाता है, तो सर्वर एक त्रुटि 500 ​​के साथ जवाब देगा।

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