मेरी .htaccess फ़ाइल में $ 1 [QSA, L] का क्या अर्थ है?


98

मुझे अपने को बदलने की जरूरत है .htaccessऔर दो लाइनें हैं जो मुझे समझ नहीं आ रही हैं।

RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

मुझे इन लाइनों का उपयोग कब करना चाहिए?



जवाबों:


215

पूर्ण ट्यूटोरियल देने के लिए जगह नहीं है, लेकिन यहां यह संक्षेप में है;

रेवेरिटकॉन्ड का मूल रूप से मतलब है "अगले रेवेरिएट को निष्पादित करें यदि यह सत्य है"। !-lपथ शर्त है कि अनुरोध एक कड़ी के लिए (नहीं है !साधन नहीं, -lसाधन लिंक)

फिर से लिखना मूल रूप से मतलब है कि अगर अनुरोध किया है कि मैचों है ^(.+)$(सर्वर मार्ग को छोड़कर किसी भी URL से मेल खाता है), यह के रूप में लिखा हो जाएगा index.php?url=$1, जिसके लिए अनुरोध है olleके रूप में लिखा हो जाएगा index.php?url=olle)।

QSAइसका मतलब यह है कि अगर कोई क्वेरी स्ट्रिंग मूल URL के साथ पास की गई है, तो इसे फिर से लिखना olle?p=1होगा ( इसे फिर से लिखा जाएगा index.php?url=olle&p=1

L यदि नियम मेल खाता है, तो इस से नीचे किसी भी अधिक रिवेरिट्यूल्स को संसाधित न करें।

इस पर अधिक पूरी जानकारी के लिए, ऊपर दिए गए लिंक का पालन करें। फिर से लिखना समर्थन को पकड़ना थोड़ा कठिन हो सकता है, लेकिन इससे सीखने के लिए स्टैकओवरफ़्लो पर कुछ उदाहरण हैं।


क्यूएसए की जगह लेती ?है &, जिससे /page&foobarबनाम के बीच अंतर करना असंभव हो जाता है /page?foobar। मैं कैसे जगह से QSA बंद कर सकते हैं ?करने के लिए &?
पैसरियर

8

यदि निम्न स्थितियां सत्य हैं, तो URL को फिर से लिखें:
यदि अनुरोधित फ़ाइल नाम निर्देशिका नहीं है,

RewriteCond %{REQUEST_FILENAME} !-d

और यदि अनुरोधित फ़ाइलनाम एक नियमित फ़ाइल नहीं है जो मौजूद है,

RewriteCond %{REQUEST_FILENAME} !-f

और यदि अनुरोधित फ़ाइलनाम एक प्रतीकात्मक लिंक नहीं है,

RewriteCond %{REQUEST_FILENAME} !-l

फिर निम्नलिखित तरीके से URL को फिर से लिखें:
संपूर्ण अनुरोध फ़ाइल नाम लें और इसे "url" क्वेरी पैरामीटर के मान के रूप में index.php पर प्रदान करें। मूल क्वेरी से आगे क्वेरी पैरामीटर (QSA) के रूप में किसी भी क्वेरी स्ट्रिंग को जोड़ें, और इस .htaccess फ़ाइल (L) को संसाधित करना बंद करें।

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

अपाचे डॉक्स #flag_qsa

एक और उदाहरण:

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

[क्यूएसए] ध्वज के साथ, के लिए एक अनुरोध

/ पृष्ठों / 123? एक = दो

को मैप किया जाएगा

/page.php?page=123&one=two


0

इस तरह फ़ाइलों के लिए अनुरोध पर कब्जा होगा version, releaseऔर README.md, आदि, जो अंतिम बिंदुओं के रूप में या तो इलाज किया जाना चाहिए अगर, (के / रिलीज मामले में) में परिभाषित या के रूप में "नहीं मिला।"

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