दिलचस्प पोस्ट
पता लगाएं कि कोई पृष्ठ एक लंबवत स्क्रॉलबार है या नहीं? सेलरी कार्य prefetching को समझना .NET कंसोल अनुप्रयोग बाहर निकलें ईवेंट एक चर में संग्रहीत स्ट्रिंग से PHP फ़ंक्शन कैसे कॉल करें आईओएस 7: MPMusicPlayerController वॉल्यूम बहिष्कृत। डिवाइस के वॉल्यूम को अब कैसे बदला जाए? एक निष्पादन योग्य जार के साथ छवियों को शामिल करना स्विफ्ट का उपयोग करके पाठ फ़ील्ड (दाएं से बाएं) पर मुद्रा प्रारूप कैसे इनपुट करें? दो डेटाबेस के बीच विदेशी कुंजी संबंध जोड़ें नमक उत्पन्न और खुले स्रोत सॉफ्टवेयर मैं एक आईएसओ 8601 दिन-समय की स्ट्रिंग को पायथन डीट टाइम ऑब्जेक्ट में कैसे अनुवाद कर सकता हूं? वास्तविक समय में रिच टेक्स्टबॉक्स सिंटेक्स हाइलाइटिंग – पुन: रंग को अक्षम करना दृश्य सी ++ 2010 एक्सप्रेस का उपयोग करते हुए 64-बिट अनुप्रयोग को कैसे संकलित करें? किसी निर्भरता के बिना चलाने के लिए पायथन स्क्रिप्ट स्टैंडअलोन कैसे निष्पादित किया जा सकता है? क्या रेज़र के साथ एक सामान्य @ हाल्पर विधि बनाना संभव है? आप जेएसपी में क्लासेस कैसे आयात करते हैं?

RewriteRule अंतिम झंडा काम नहीं कर रहा है?

php_flag display_errors 1 php_value auto_prepend_file init.php RewriteEngine on RewriteRule ^$ /id/authenticate [R] RewriteRule ^login_openid$ /id/login_openid.php [QSA,L] RewriteRule ^authenticate$ /id/authenticate.php [QSA,L] RewriteRule ^facebook$ /id/facebook.php [QSA,L] RewriteRule ^createfromopenid$ /id/createfromopenid.php [QSA,L] RewriteRule .* - [L,R=403] 

यह मेरी .htaccess फ़ाइल है सर्वर कॉन्फ़िगर में मेरे पास AllowOVerride all

अगर मैं यूआरएल http://mydomain.com/id/authenticate अनुरोध करता हूं तो मुझे 403 त्रुटि मिलती है। अगर मैं अंतिम नियम निकालता हूं, तो यह काम करता है क्या [L] फ्लोट होने से किसी भी अन्य नियम को रोकना चाहिए?

संपादित करें:

मेरी htaccess फ़ाइल सबफ़ोल्डर "आईडी" में है, इसलिए नियम काम करते हैं।

वेब के समाधान से एकत्रित समाधान "RewriteRule अंतिम झंडा काम नहीं कर रहा है?"

[L] नियम ठीक काम करता है – आपको नहीं पता कि यह वास्तव में कैसे काम करता है

जब अपाचे [L] ध्वज और नियम मैचों (पुन: लिखना होता है) को देखता है, तो अपाचे अगले पुनरावृत्ति के लिए जाएंगे और शीर्ष पर फिर से सभी नियमों का मिलान करना शुरू कर देंगे। [L] फ्लैग का अर्थ है " इस पुनरावृत्ति में नीचे दिए गए नियमों पर कार्रवाई नहीं करें "

हां, अपाचे दस्तावेज़ीकरण इस पर 100% स्पष्ट नहीं है (जिसका अर्थ है कि इसमें सुधार किया जा सकता है), लेकिन अंततः इसे समझने के लिए पर्याप्त जानकारी प्रदान करता है।


अपाचे कुछ परिस्थितियों में फिर से लिखना चक्र रोक देगा:

  1. कोई भी नियम मिलान नहीं हुआ (कोई पुन: लिखना नहीं हुआ);

  2. "अब बाहर निकलें" नियम मिलान किया है (उदाहरण के लिए RewriteRule .* - [L] );

  3. पुनर्लेखन तब होता है, लेकिन इनपुट यूआरएल और अंतिम यूआरएल एक ही होते हैं (2-3 रेवियन पर होता है जब "बुरी तरह" लिखित नियम उसी यूआरएल को उसी यूआरएल पर लिखते हैं।

    उदाहरण के लिए RewriteRule (.*) /index.php?page=$1 [L] :

    • /hello => /index.php?page=hello
    • अगले चलन पर इसे पुनः लिखना होगा /index.php => /index.php?page=index.php
    • और 3 वें स्थान पर यह /index.php => /index.php?page=index.php .. जो अब कोई मतलब नहीं है);
  4. फिर से लिखना चलना सीमा (डिफ़ॉल्ट रूप से = 10) पर पहुंच गई है – यदि आपने अनंत पुनर्लेखन चक्र दर्ज किया है (मान LimitInternalRecursion डायरेक्टिव द्वारा नियंत्रित है)


सभी aforementioned जानकारी के साथ मैं यह कह सकता हूँ कि आपके मौजूदा नियम अपेक्षित रूप से काम करते हैं इसका अर्थ है कि आपको तर्क को बदलना होगा और अंतिम नियम से छुटकारा पड़ेगा (शायद माता-पिता .htaccess में इस क्षण को संभालो .. या इसे अलग ढंग से संभालना – यह सब निर्भर करता है कि आपका आवेदन कैसे बनाया गया है, मैं जंगली अनुमान नहीं करना चाहता हूं )।

इसे अपने cath all नियमों के सामने रखो।

 RewriteCond %{ENV:REDIRECT_STATUS} !=200 

समस्या यह है कि [एल] ध्वज पर एक बार संसाधित हो जाने के बाद, सभी अगले रिरेइट नियम को वास्तव में अनदेखा कर दिया जाता है, हालांकि, फ़ाइल को नए यूआरएल के साथ शुरू होने से पुन: संसाधित किया जाता है।

अगर इस फाइल को पहले से ही पुनर्निर्देशित किया गया था तो यह जादू स्थिति catch all को catch all प्रक्रिया नहीं करेगी।

पुनश्च: अगर यह काम नहीं कर रहा है, तो आपको इस शर्त को थोड़ी मात्रा में बदलना होगा: 200 !=200 , ^. , ^$
जाहिरा तौर पर चर को रीडायरेक्ट के लिए 200 सेट किया जाता है, लेकिन अन्य पृष्ठों (त्रुटि और सामान) इसे कुछ मान पर सेट करते हैं। अब इसका मतलब है कि आप या तो जांच लें कि यह is empty , is not empty , is 200 या is not 200 , जो कि आपको क्या चाहिए।