RewriteCond %{QUERY_STRING} book=(\w+)&page=(\d+)
RewriteRule ^index.php /%1/%2? [L,R=301]
RewriteRule केवल पथ पर (अप करने के लिए, लेकिन प्रश्न चिह्न शामिल नहीं) लग रहा है क्योंकि, RewriteCond का उपयोग क्वेरी स्ट्रिंग में मान कैप्चर करना।
ध्यान दें कि RewriteCond
से मेल खाता है %1
में कब्जा कर रहे हैं, %2
, आदि के बजाय $1
, $2
, आदि
इसके अलावा RewriteRule
के अंत में ?
ध्यान दें। यह mod_rewrite को नए URL पर मूल क्वेरी स्ट्रिंग को जोड़ने के लिए नहीं बताता है, इसलिए आप /DesignPatterns/151
/DesignPatterns/151?book=DesignPatterns&page=151
के पूर्णांक के साथ समाप्त होते हैं।
L
सुनिश्चित करता है कि कोई अन्य नियम है कि अन्यथा से मेल करने वाले कार्रवाई की जाएगी (दूसरे शब्दों में, यह सुनिश्चित करता है इस "पिछले" संसाधित नियम है): [L,R=301]
झंडे दो बातें।
R=301
सर्वर को रीडायरेक्ट प्रतिक्रिया वापस भेजने का कारण बनता है। पुनर्लेखन के बजाय, यह क्लाइंट को नए URL के साथ फिर से प्रयास करने के लिए कहता है। =301
इसे permanent redirect बनाता है, ताकि अन्य चीजों के साथ, खोज इंजन पुराने यूआरएल को उनके इंडेक्स में नए यूआरएल के साथ बदलने के बारे में जानेंगे।
स्रोत
2010-02-12 14:01:45
+1 मुझे यह पसंद है जब एक उत्तर के साथ एक पूर्ण स्पष्टीकरण दिया जाता है –
जब आप एकाधिक रीराइट नियम होते हैं तो शायद आप [एल] ध्वज भी चाहते हैं। नियम के मिलान के बाद [एल] झंडा प्रसंस्करण बंद कर देता है, और [आर] झंडा इसमें शामिल नहीं है। – TheJosh
$ बनाम% मुझे मार रहे थे। मुझे पता नहीं था। धन्यवाद! – keithwyland