我这是第一次需要帮助。如何使用url rewrite 2.0创建代码以根据查询重写url。
我需要:
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
依旧......
需要使用网址重写解决方案:2.0
EDITED 我尝试....但我有问题第一个角色运作良好但第二个没有,可能查询字符串不是没有准确完成,不知道。
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^Ekonomija/Ekonomija\.aspx$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^([^=&]+)=([^=&]+)$" />
</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="^([^=&]+)=([^=&]+)$" />
</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>
答案 0 :(得分:0)
它可能适用于第一个但它永远不会与第二个一起工作 为什么呢?
因为您有两个完全符合相同条件的规则:RewriteUserFriendlyURL1
和RewriteUserFriendlyURL2
在这种情况下,第二个永远不会执行,因为它按顺序处理,第一个将始终接管。
无论如何,我试图简化你的规则如下:
<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>
重定向仅在
时有效Ekonomija/Ekonomija.aspx
或Test2/Test2.aspx
POST
=
),后跟第二个字母数字序列在这种情况下,我们使用查询字符串(first sequence/second sequence
)中的后向引用重定向。
然后我们在
时使用重写规则Ekonomija
或Test2
开头,后跟斜杠(/
)并包含一个或多个字母数字字符在这种情况下,我们使用来自请求的URL的后引用重写。