2015-05-17 9 views
6
RewriteRule ^([a-z]).php$ /index.php?zig=$1 [NC,L] # working 

के साथ काम नहीं कर रहा है यह नियम सही तरीके से काम कर रहा है। लेकिनरिवाइटरूल प्लस (+ या *) वर्ण

RewriteRule ^([a-z]+).php$ /index.php?zig=$1 [NC,L] # not working 

या

RewriteRule ^([a-z]\+).php$ /index.php?zig=$1 [NC,L] # not working 

काम नहीं कर रहा है। अंतर है (+)। उपरोक्त कोड में + का उपयोग कैसे करें?

+0

शीर्ष युक्ति: वाक्यांश "काम नहीं कर रहा" वाक्यांश समस्या विवरणों से बचा जाना चाहिए। यह बहुत अस्पष्ट है। इसके बजाए, ठीक से वर्णन करें कि क्या होता है (सबूत के साथ!) और समझाएं कि इसके बदले में आप क्या करना चाहते हैं उससे अलग है। हम उस कोड से प्राप्त नहीं कर सकते जिसे आप कोड से हासिल करना चाहते हैं, अपने स्वयं के प्रवेश से, वह चीज़ नहीं प्राप्त करता है! :) –

उत्तर

3

यह नियम ठीक है:

RewriteRule ^([a-z]+)\.php$ /index.php?zig=$1 [NC,L] 

लेकिन यूआरआई /index.php फिर से लिखा भी regex नमूने का मिलान के बाद से एक अनंत लूप का निर्माण करेगा। इसे रोकने आप इस फिर से लिखने से फाइल/निर्देशिका को रोकने की तरह परिवर्तन की जोड़ी की जरूरत है और डॉट से बचने के लिए के रूप में यह एक विशेष regex मेटा चरित्र है:

# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]+)\.php$ index.php?zig=$1 [QSA,NC,L] 

QSA (क्वेरी स्ट्रिंग संलग्न) झंडा मौजूदा क्वेरी पैरामीटर, जबकि एक को जोड़ने को बरकरार रखता है नया।

+1

धन्यवाद। यह काम कर रहा है। –

संबंधित मुद्दे