2010-04-26 26 views
5

मैं अपाचे का उपयोग कर रहा हूं और मैं सभी प्राप्त अनुरोध को एसएसएल वर्चुअल होस्ट पर रीडायरेक्ट करना चाहता हूं।रेगेक्स - किसी विशेष पैटर्न को छोड़कर सब कुछ कैसे मिलान करें

RedirectMatch https://www.mydomain.com $ 1

जो मूल रूप से सब कुछ से $ 1 की जगह:

तो मैं सामान्य http वर्चुअल होस्ट में निम्नलिखित पंक्ति है (*।)।

यह पूरी तरह से काम करता है। लेकिन अब, मुझे एक विशेष CGI तक पहुंचने की आवश्यकता है जो SSL वर्चुअल होस्ट पर नहीं हो सकता है। तो मैं निम्नलिखित को छोड़कर सभी अनुरोध को रीडायरेक्ट करना चाहते हैं:

"http://www.mydomain.com/mycgi/cgi.php"

मैं इस मंच पर खोज और कुछ regex बहिष्कार के विषय में पोस्ट पाया, लेकिन कोई भी काम कर रहा है। किसी भी तरह की सहायता का स्वागत किया जाएगा।

धन्यवाद। एलैन

उत्तर

2

अपाचे 2.2 और बाद में नियमित अभिव्यक्तियों में नकारात्मक दिखने का समर्थन है। यदि आप अपाचे 2.2 का उपयोग कर रहे हैं या बाद में यह काम करना चाहिए:

RedirectMatch ^/(?!mycgi/cgi.php)(.*) https://www.mydomain.com/$1 
+0

बहुत बहुत धन्यवाद। यह पूरी तरह से काम करता है। आपने लगभग 30 मिनट में कम से कम 30 मिनट में क्या हल किया था! – Alain

+0

यदि यूआरएल है तो यह अच्छी तरह से काम करता है: mycgitest/cgi.php? – Felix

1

मेरा मानना ​​है कि रेडियोधर्मी एक short-circuit sorta deal है। इसका क्या अर्थ है, यह है कि यदि आप अपने मैच से पहले एक और रीडायरेक्ट मैच डालते हैं, तो केवल पहला मैच निष्पादित होगा। तो कुछ ...

RedirectMatch (/mycgi/cgi.php) http://www.mydomain.com$1 
RedirectMatch (.*) https://www.mydomain.com$1 
+0

+1 आपने मुझे कुछ सेकंड तक हराया। आपका पहला नियम 'http' पर रीडायरेक्ट होना चाहिए और आप इसके लिए एक अग्रणी '/' भी जोड़ना चाहेंगे। –

+0

क्या पहला नियम परिणाम रीडायरेक्ट लूप में नहीं होगा? –

+0

वाह ... यह तेज़ था !!! लेकिन दुर्भाग्य से इस लाइन को मेरे "सामान्य गैर एसएसएल" वर्चुअल होस्ट में डालकर, यह काम नहीं करता है। फ़ायरफ़ॉक्स मुझे वह त्रुटि देता है: फ़ायरफ़ॉक्स ने पाया है कि सर्वर इस पते के अनुरोध को इस तरह से पुनर्निर्देशित कर रहा है जो कभी पूरा नहीं होगा। और मुझे लगता है कि यह सामान्य है क्योंकि हम अपाचे से रीडायरेक्ट करने के लिए कहते हैं। तो अपाचे को अनुरोध प्राप्त होता है, पहले रेगेक्स के खिलाफ मैच करें, फिर खुद को रीडायरेक्ट करें, फिर से मिलान करें, और इसी तरह से। इसके बारे में आपका विचार? मैंने अपने एसएसएल वर्चुअल सर्वर में लाइन डालने का प्रयास किया लेकिन इसे अनदेखा कर दिया गया। Alain – Alain