से निर्देशिका को छोड़कर मैं अंडरस्कोर के साथ सभी यूआरएल को उनके डैश किए गए समकक्ष पर रीडायरेक्ट करना चाहता हूं।रेगेक्स रीडायरेक्ट
उदा। /nederland/amsterdam/car_rental
/nederland/amsterdam/car-rental
बन जाता है। इसके लिए मैं यहां वर्णित तकनीक का उपयोग कर रहा हूं: How to replace underscore to dash with Nginx। तो मेरी स्थान ब्लॉक करने के लिए मिलान किया जाता है:
location ~ (_)
लेकिन मैं केवल/admin
नाम स्थान में नहीं यूआरएल पर ऐसा करना चाहते हैं । इसे पूरा करने के लिए मैंने ऋणात्मक लुकअप के साथ रेगेक्स को संयोजित करने का प्रयास किया: Regular expression to match a line that doesn't contain a word?।
(?=^(?!\/admin))(?=([^_]*))
Rubular रिपोर्ट स्ट्रिंग /nederland/amsterdam/car_rental
रेगुलर एक्सप्रेशन से मेल करने के लिए है, जबकि /admin/stats_dashboard
दर्ज नहीं होता है, मैं इसे देखना चाहते बस के रूप में: के साथ स्थान अब मेल खाता है। हालांकि जब मैं इस नियम को nginx कॉन्फ़िगरेशन पर लागू करता हूं, तो साइट रीडायरेक्ट लूप में समाप्त होती है। क्या मैंने कुछ भी अनदेखा किया है?
अद्यतन: मैं वास्तव में /admin
नामस्थान में कुछ भी लिखना नहीं चाहता हूं। अंडरस्कोर-टू-डैश रीराइट केवल /admin
नामस्थान में पर सभी यूआरएल पर ही होना चाहिए।
यह नमूना कोड कुशल नहीं है, क्योंकि आपको सभी अंडरस्कोर से छुटकारा पाने के लिए कई बार '$ uri' से गुजरना होगा। – cnst