0

私はこれを初めて行うので、助けが必要です。url rewrite 2.0 を使用してコードを作成し、クエリに基づいて url rewrite を作成する方法。

する必要がある:

www.Example/Ekonomija/Ekonomija.aspx?Ekonomija=something

することが

www.Example/Ekonomija/something

www.Example/Test2/Test2.aspx?Test2=something

することが

www.Example/Test2/something

www.Example/Test3/Test3.aspx?Test3=something

することが

www.Example/Test3/something

等々 ....

URL 書き換えによる解決策が必要: 2.0

編集 済み試してみました....しかし、最初の役割はうまく機能しますが、2番目の役割には問題があります。おそらく、クエリ文字列が正確に実行されていないため、わかりません。

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
                <match url="^Ekonomija/Ekonomija\.aspx$" />
                <conditions>
                    <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                    <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" />
                </conditions>
                <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
            </rule>
            <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                <match url="^([^/]+)/([^/]+)/?$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="Ekonomija/Ekonomija.aspx?{R:1}={R:2}" />
            </rule>
            <rule name="RedirectUserFriendlyURL2" stopProcessing="true">
                <match url="^Test2/Test2\.aspx$" />
                <conditions>
                    <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                    <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" />
                </conditions>
                <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
            </rule>
            <rule name="RewriteUserFriendlyURL2" stopProcessing="true">
                <match url="^([^/]+)/([^/]+)/?$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="Test2/Test2.aspx?{R:1}={R:2}" />
            </rule>
4

1 に答える 1

0

最初のものではうまくいくかもしれませんが、2番目のものでは決してうまくいきません。
なんで?

まったく同じ条件に一致する 2 つのルールがあるため:RewriteUserFriendlyURL1RewriteUserFriendlyURL2

この場合、2 番目の処理は順番に処理され、最初の処理が常に引き継がれるため、実行されることはありません。

とにかく、私はあなたのルールを次のように単純化しようとしました:

<rule name="Redirect rule" stopProcessing="true">
    <match url="^(Ekonomija/Ekonomija|Test2/Test2)\.aspx$" />
    <conditions>                                                        
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^(\w+)=(\w+)$" />
    </conditions>                                            
    <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
</rule>
<rule name="Rewrite rule" stopProcessing="true">
    <match url="^(Ekonomija|Test2)/(\w+)$" /> 
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="{R:1}/{R:1}.aspx?{R:1}={R:2}" />
</rule>

リダイレクトは次の場合にのみ機能します

  • 要求された URL は、Ekonomija/Ekonomija.aspxまたはTest2/Test2.aspx
  • URL へのアクセスに使用されたメソッドが正しくありませんでしたPOST
  • クエリ文字列は、1 つの英数字シーケンスの後に等号 ( =) が続き、その後に 2 番目の英数字シーケンスが続きます。

この場合、クエリ文字列 ( first sequence/second sequence) からの後方参照を使用してリダイレクトします。

次に、書き換えルールが機能するようにします

  • 要求された URL はEkonomijaまたはTest2で始まり、その後にスラッシュ ( /) が続き、その後に 1 つ以上の英数字が含まれます。
  • 要求された URL がサーバー上のファイルまたはディレクトリへのパスと一致しません

この場合、要求された URL からの後方参照を使用して書き換えます。

于 2013-05-08T17:06:36.333 に答える