मुझे अपने को बदलने की जरूरत है .htaccess
और दो लाइनें हैं जो मुझे समझ नहीं आ रही हैं।
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
मुझे इन लाइनों का उपयोग कब करना चाहिए?
मुझे अपने को बदलने की जरूरत है .htaccess
और दो लाइनें हैं जो मुझे समझ नहीं आ रही हैं।
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
मुझे इन लाइनों का उपयोग कब करना चाहिए?
जवाबों:
पूर्ण ट्यूटोरियल देने के लिए जगह नहीं है, लेकिन यहां यह संक्षेप में है;
रेवेरिटकॉन्ड का मूल रूप से मतलब है "अगले रेवेरिएट को निष्पादित करें यदि यह सत्य है"। !-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 बंद कर सकते हैं ?
करने के लिए &
?
यदि निम्न स्थितियां सत्य हैं, तो 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]
एक और उदाहरण:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
[क्यूएसए] ध्वज के साथ, के लिए एक अनुरोध
/ पृष्ठों / 123? एक = दो
को मैप किया जाएगा
/page.php?page=123&one=two
इस तरह फ़ाइलों के लिए अनुरोध पर कब्जा होगा version
,
release
और README.md
, आदि, जो अंतिम बिंदुओं के रूप में या तो इलाज किया जाना चाहिए अगर, (के / रिलीज मामले में) में परिभाषित या के रूप में "नहीं मिला।"