2011-11-21 7 views
22

मैं apache .htaccess के साथ रीडायरेक्ट करने का प्रयास कर रहा हूं। मैं निम्नलिखित कोडसटीक यूआरएल मैचों के दौरान केवल रीडायरेक्ट कैसे करें?

redirectMatch 301 /user http://clients.mydomain.com 

यह बहुत अच्छी तरह से काम करता है, लेकिन मैं नहीं करना चाहती "/ उपयोगकर्ता/लॉगिन" को "http://clients.mydomain.com/login" निर्देशित किया जाने वाला ।

मैं इसे कैसे रोकूं?

उत्तर

1

एक रेगेक्स का उपयोग करें, आप पहले ही रीडायरेक्ट मैच का उपयोग कर रहे हैं।

http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectmatch

'$' url के अंत से मेल खाता है। अपने उदाहरण में:

redirectMatch 301 ^/user/(.+)$ http://clients.example.com/ 
37

सरल यूआरएल

$ बताता है की शुरुआत से मेल करने के लिए regex बताता शुरुआत करने के लिए एक ^ और अंत

^ बताता है करने के लिए एक $ जोड़ने रेगुलर एक्सप्रेशन से मेल करने के लिए कहता है यूआरएल

redirectMatch 301 ^/user$ http://clients.mydomain.com 

तो अब आपका नियम केवल माँ tch /user और नहीं /some/user या /user/name या /some/user/name


नोट: आप मेल करना चाहते हैं /user/ और /user तो का उपयोग ^/user/?$

? पिछले वर्ण/समूह शून्य एक बार

मिलान करने के लिए कहते हैं
+1

पीछे की ओर जांचना/एक अच्छा विचार है। फ़ायरफ़ॉक्स इसे छुपाता है, भले ही आपको लगता है कि यूआरएल/उपयोगकर्ता वास्तव में इसे/उपयोगकर्ता/ – SomethingOn

+0

के रूप में पारित किया जा रहा है, लेकिन यदि आपके पास स्पेस वर्ण '' हैं? आपको ठीक से संभालने के लिए डबल कोट्स की आवश्यकता है। 'रीडायरेक्ट' परिणामों के regex में escapes '\' का उपयोग करके सिस्टम में यह सोचने के लिए कि यह एक अतिरिक्त स्थान के बजाय एक अतिरिक्त पैरामीटर है। और यदि आपके पास डबल कोट्स हैं, तो आप सटीक मिलान निर्दिष्ट करने के लिए '^' या '$' का उपयोग नहीं कर सकते हैं – ahnbizcad

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