2011-11-22 11 views
7

पर यह एक लंबा शॉट है, लेकिन मुझे उम्मीद है कि एक विचित्र बग के लिए एक सरल कामकाज ढूंढने की उम्मीद है जो केवल तब प्रकट होता है जब क्वेरी स्ट्रिंग को एप्लिकेशन द्वारा छोड़ा/अनुमानित किया जाता है।mod_rewrite केवल

मिनीडिटेड तृतीय पक्ष जावास्क्रिप्ट की एक हजार पंक्तियों में गहरी खुदाई करने से पहले, मैं यह जानना चाहता हूं कि क्या मैं mod_rewrite का उपयोग करके क्वेरीस्ट्रिंग को स्वतः लागू कर सकता हूं।

RewriteRule ^index\.php$ index.php?module=Home&action=index 

अब, यह छोड़कर कभी कभी सभी डेटा तैनात किया जाएगा ठीक काम करेगा तो मैं जरूरत है एक RewriteCond तो नियम केवल GET अनुरोध, और नहीं POST अनुरोध पर आग।

क्या यह संभव है?

उत्तर

10

इस हालत जोड़ें ...

RewriteCond %{REQUEST_METHOD} !POST 

... POST अनुरोधों का मिलान नहीं करते।

+0

मुझे पता था कि ऐसा कुछ ऐसा होना था। मैंने दस्तावेज़ों के माध्यम से खोद दिया और खाली हाथ आया। मैं मदद की सराहना करता हूं! –

3

the docs से:

  • सर्वर-चर:

    ...

  • : ये प्रपत्र %{ NAME_OF_VARIABLE } जहां NAME_OF_VARIABLE एक स्ट्रिंग निम्न सूची से लिया जा सकता है की चर हैं

कनेक्शन & अनुरोध:
...
REQUEST_METHOD

तो, हाँ। उस सर्वर चर के साथ RewriteCond का उपयोग करें।

+0

बहुत बहुत धन्यवाद! –

+1

+1 क्योंकि एकमात्र कारण मुझे जवाब पता था क्योंकि आपने मुझे एक बार कहा था :) – alex

9

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

RewriteCond %{REQUEST_METHOD} =GET 

RewriteRule ^index\.php$ index.php?module=Home&action=index