asp.net - एक यूजर के एक हिस्से को निकालने के लिए रेगेक्स और इसे यूआरएल रीराइट में एक संदर्भ के रूप में प्रयोग करें



regex iis (1)

आप एम्परसेंड कोड को भूल गए होना चाहिए:

<system.webServer>
<rewrite>
  <rules>
    <rule name="test" stopProcessing="true" enabled="true">
      <match url="https?://of.example.com/sfsv3.aspx\?waform=pro&amp;(language=(..))" ignoreCase="true" />
      <action type="Redirect" url="http://www.example.com/ca/{R:2}/ppf" />
    </rule>
  </rules>
</rewrite>

ठीक है, मैं सोच रहा हूं कि कोई व्यक्ति रीजक्स के साथ हाथ उधार दे सकता है, जिसे मैं लिखना चाहता हूं।

असल में, मैं क्या करना चाहता हूँ IIS urlrewrite मॉड्यूल का उपयोग किसी विशिष्ट यूआरएल पर एक रीडायरेक्ट करने के लिए करता है अगर उपयोगकर्ता किसी अन्य साइट पर यूआरएल को एक्सेस करता है। एकमात्र पकड़ मुझे क्वेरी स्ट्रिंग का एक सा भी कब्जा करना होगा, और उसे रीडायरेक्ट में ले जाना होगा। मुझे लगता है कि वास्तव में इसके लिए regex सही है, लेकिन यह मेरे web.config में लागू कर रहा है जो समस्या पैदा कर रहा है।

तो यहां इनपुट है, यूआरएल जो यूजर एक्सेस कर सकता है, वह ऐसा दिखेगा:

https://of.example.com/sfsv3.aspx?waform=pro&language=en

मैं उस यूआरएल से मिलान करना चाहता हूं (या तो एचटीटीपी या एचटीएस, केस असंवेदनशील), और इसके बारे में जानकारी का एक टुकड़ा भी लेता है, दो अक्षर भाषा कोड तो यूआरएल मैं उपयोगकर्ता को दिखाना चाहता हूं:

http://example.com/ca/en/ppf

(जहां एन ऊपर जो भी मैंने कब्जा कर लिया है द्वारा बदल दिया गया है)

इसलिए, मैं आईआईएस रीराइट मॉड्यूल के साथ काम कर रहा हूं, और मैंने अपना इनपुट डेटा और रेगेक्स में काम किया है, अब तक मेरे पास रेगेक्स पैटर्न है:

https?://of.example.com/sfsv3.aspx\?waform=pro&(language=(..))

तो मूल रूप से मैं पूरी स्ट्रिंग से मेल खाता हूँ, प्लस एक समूह और भाषा के लिए एक उपसमूह और यह कोड है। IIS परीक्षण पैटर्न संवाद में, यह काम कर रहा है।

मुझे निम्नलिखित मिलता है

{R: 1} भाषा = एन

{आर: 2} एन

महान! तो फिर मेरा आईआईएस पुन: लिखना नियम इस तरह उपयोगकर्ता को पुनर्निर्देशित करने के लिए दिखना चाहिए:

<system.webServer>
    <rewrite>
      <rules>
        <rule name="test" stopProcessing="true" enabled="true">
          <match url="https?://of.example.com/sfsv3.aspx\?waform=pro&(language=(..))" ignoreCase="true" />
          <action type="Redirect" url="http://www.example.com/ca/{R:2}/ppf" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

यह सब मुझे सही लगता है हालांकि, IIS चल रहा है और कह रहा है कि मेरी web.config अवैध है विशेष रूप से, यह कहते हैं, "इकाई" ('परिभाषित नहीं है') और यह इंगित करता है कि (समस्या से पहले भाषा की समस्या है) इसलिए, जब तक मैं इसे ठीक नहीं करता हूँ, तब तक मैं इस एप्लिकेशन का निर्माण या तैनात नहीं कर सकता। उस web.config में ड्रॉप करने का प्रयास करें, मुझे साइट को लोड करने में कोई त्रुटि मिलती है:

HTTP त्रुटि 500.19 - आंतरिक सर्वर त्रुटि अनुरोधित पृष्ठ का उपयोग नहीं किया जा सकता क्योंकि पृष्ठ के संबंधित कॉन्फ़िगरेशन डेटा अमान्य है।

क्या कोई मेरी मदद कर सकता है कि मुझे एक कैद समूह को पुनर्लेखन नियम में कैसे ठीक से रखा जाए?





url-rewriting