基於「UserFriendlyURL」自動規則,我有一組兩個IIS URL重寫規則。這兩條規則的要點是取前兩個querystring參數(類型和系列)並將它們轉換爲用戶友好的URL。 如果用戶與其上的搜索進行交互,該頁面可能會將您返回到此頁面,但會返回其他查詢字符串參數,例如「頁面」或「頁面大小」。因爲它們不是友好URL的一部分,但是如果存在這些項目,我希望頁面向下滾動到搜索對象(因爲它們不是友好URL的一部分,因爲它們不是友好URL的一部分,很明顯,用戶只是與它進行交互)。IIS URL重寫,URL中的條件更改
爲此,我認爲我想要做的就是在最後添加一個位置散列(#search)。而不是遍歷該網頁上的每個搜索字詞,並手動將「#搜索」添加到最後(其中許多實際上是onclick操作,我不想編輯每個JS方法以將其添加到生成的URL的末尾),只要捕獲任何查詢字符串參數(除了類型/系列)存在的事實就好了,如果是這樣的話,請在URL的末尾添加「#search」。
這是可行的,如果是這樣,如何?我知道在條件句正則表達式: http://www.regular-expressions.info/conditional.html
但我不認爲這些會在這種情況下工作(!我很高興是錯的)
<rewrite>
<rules>
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^(cn/)?/product-details$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^Type=([^=&]+)&Series=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{R:1}/product-details/{C:1}/{C:2}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^(cn/)?/product-details/([^/]+)/([^/]+)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}/product-details?Type={URLEncode:{R:2}}&Series={URLEncode:{R:3}}" />
</rule>
</rules>
</rewrite>