2011-12-23 12 views
11

मैं .htaccess का उपयोग करता हूं और मेरे पास एक ऐसा नियम है जो मुझे अपने डेटाबेस में गतिशील रूप से उत्पाद की तलाश करने देता है।। उत्पादों के साथ htaccess (स्ट्रिंग)

तो किसी को इस तरह एक लिंक पर क्लिक कर सकते हैं:

www.domain.com/product/modular-plastic-lunch-set.html 

और उत्पाद देखें। अब मेरी समस्या यह है, जब मैं

www.domain.com/product/Modular-Plastic-Lunch-Set.html 

यह काम नहीं करता,

क्यों प्रयोग करते हैं? यहाँ मेरे नियमों है:

RewriteEngine On 
RewriteRule ^product/([a-z0-9\-]+).html$ products.php?name=$1 

उत्तर

12

क्योंकि आप या तो A-Z या [NC] झंडा नहीं है यह काम नहीं करता।

[एनसी] ध्वज का उपयोग रीव्राइटरूल को केस-असंवेदनशील तरीके से मिलान करने का कारण बनता है। यही है, यह परवाह नहीं करता है कि अक्षरों मिलान किए गए यूआरआई में ऊपरी-केस या लोअर-केस के रूप में दिखाई देते हैं या नहीं।

[एल] झंडा नियम सेट प्रसंस्करण को रोकने के लिए mod_rewrite का कारण बनता है:

RewriteRule ^product/([a-z0-9\-]+).html$ php.php?name=$1 [NC,L,QSA] 

या

RewriteRule ^product/([a-zA-Z0-9\-]+).html$ php.php?name=$1 [L,QSA] 

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

और QSA झंडा:

जब प्रतिस्थापन यूआरआई एक क्वेरी स्ट्रिंग, डिफ़ॉल्ट व्यवहार फिर से लिखना के मौजूदा क्वेरी स्ट्रिंग त्यागें, और इसे बदलना नव जनरेट साथ है शामिल हैं। [क्यूएसए] ध्वज का उपयोग करने के लिए क्वेरी तारों को संयुक्त करने का कारण बनता है। http://httpd.apache.org/docs/2.3/rewrite/flags.html

सुझाव::

पर झंडे बारे में अधिक जानकारी आप नाम का उपयोग कर देख रहे हैं उत्पादों के लिए, आप देरी आपकी क्वेरी में देख सकते हैं, speically यदि आप एक सूचकांक जरूरत नहीं है। बदसूरत होने से पहले आपको इसे देखना चाहिए।

+0

+1 [एनसी] 'ध्वज के लिए +1। उस बारे में नहीं पता था। –

+0

धन्यवाद यह काम करता है, मैं आज रात चालाक सो जाऊंगा - स्पष्टीकरण के लिए धन्यवाद, बहुत उपयोगी। – dale

+0

आपका स्वागत है, और स्टैक ओवरफ्लो में आपका स्वागत है! –

2

आप केवल निम्न केस अक्षरों (और संख्याओं) की तलाश में हैं। आपको ऊपरी केस अक्षर जोड़ने की जरूरत है।

RewriteEngine On 
RewriteRule ^product/([A-Za-z0-9\-]+).html$ products.php?name=$1