apache - multiple RewriteCond or multiple RewriteRules, which is more efficient? -


क्या अधिक कुशल होगा? एक RewriteRule के साथ [OR] सूची RewriteCond :

  RewriteCond% {QUERY_STRING} ^) के साथ आईडी = 8 [3- 9] $ [या] रीराइट कंडोम% {QUERY_STRING} ^ आईडी = 9 [0-2] $ [OR] पुनर्लेखन% {QUERY_STRING} ^ आईडी = 35 $ पुनर्लेखन नियम ^ index \ .php $ / go- यहाँ/? [एल, आर = 301, एनसी]   

या एकाधिक पुनर्लेख नियम , प्रत्येक एक RewriteCond :

  पुनर्लेखन% {QUERY_STRING} ^ आईडी = 8 [3- 9] $ पुनर्लेखन नियम ^ .php $ / go-here /? [एल, आर = 301, एनसी] रीराइटकंड% {QUERY_STRING} ^ आईडी = 9 [0-2] $ रीरेमिट नियम ^ index \ .php $ / go-here /? [एल, आर = 301, एनसी] रीराइटकंड% {QUERY_STRING} ^ आईडी = 35 $ पुनर्लेखन नियम ^ .php $ / go-here /? [एल, आर = 301, एनसी]   

मैं पहले विकल्प की ओर झुका रहा हूं क्योंकि कम लाइनें हैं, लेकिन संभवतः क्योंकि तर्क अधिक जटिल है, दक्षता खो जाती है?

एक बार आप फिर से लिखना लॉगिंग को चालू करने पर ध्यान देंगे, यह एक RewriteRule को पहले लागू किया जाता है, तो अगर वह पैटर्न यूआरआई से मेल खाता होता है, तो RewriteCond स्थितियों की जांच की जाती है इसका मतलब है कि पहले विकल्प के लिए, आप हमेशा मिलान कर रहे हैं, 4 बार। हालांकि, दूसरे विकल्प में, सबसे अच्छे रूप से, आप 2 गुणा और सबसे खराब मिलान कर रहे हैं, आप 6 गुणा मिलान कर रहे हैं।

तो यह सचमुच निर्भर करता है, कम से कम आवश्यक मैचों की संख्या के मीट्रिक का उपयोग करना , आप क्वेरी स्ट्रिंग की कितनी बार अपेक्षा करते हैं। अगर आईडी = 83 एक बहुत होता है, तो दूसरा विकल्प बेहतर हो सकता है यदि सभी आईडी उसी के बारे में होती है, तो पहला विकल्प सबसे अच्छा हो सकता है।

दूसरी बात जिस पर आपको विचार करना चाहिए नियमों की पठनीयता है। अगर आप दूसरे विकल्प की तरह RewriteCond / RewriteRule जोड़ों का एक टन समाप्त करते हैं, तो यह पढ़ने में और अधिक कठिन हो सकता है और जैसा कि आप नियमों को जोड़ / जोड़ / हटा सकते हैं, आप

अंत में, आप शायद सिर्फ यह नियम चाहते हैं:

  पुनर्लेखन% 9 [0-2]) $ RewriteRule ^ index \ .php $ / go-here /? [एल, आर = 301, एनसी]   

लेकिन मैं मानता हूँ कि आपने इस शर्त को चुनौती दी है ताकि सवाल समझा जा सके और यह वास्तविक दुनिया का मामला नहीं है। < / div>

Comments

Popular posts from this blog

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -

c++ - Redefined variable in the other module -

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -