У меня есть это правило перезаписи:
<rule name="rentals by proptype+state+city+street test" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{UNENCODED_URL}" pattern="^/([a-zA-Z0-9\-+]+)/rent/province/([a-zA-Z\-+]+)/street/([a-zA-Z0-9%\-+]+)/([0-9a-zA-Z%\-+']+)$" />
</conditions>
<action type="Rewrite" url="search_new.aspx?proptype={C:1}&province={C:2}&city={C:3}&street={C:4}" appendQueryString="true" />
</rule>
Я также пробовал:
<rule name="rentals by proptype+state+city+street test" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{UNENCODED_URL}" pattern="^/([a-zA-Z0-9\-+]+)/rent/province/([a-zA-Z\-+]+)/street/([a-zA-Z0-9%\-+]+)/([0-9a-zA-Z%\-+']+)$" />
<add input="{QUERY_STRING}" pattern=".*" />
</conditions>
<action type="Rewrite" url="search_new.aspx?proptype={C:1}&province={C:2}&city={C:3}&street={C:4}" appendQueryString="true" />
</rule>
Этот URL работает: http://www.example.com/apartment/rent/province/texas/street/houston/mystreet
Но когда я добавляю параметры строки запроса, URL выдает 404: http://www.example.com/apartment/аренда/провинция/техас/улица/хьюстон/mystreet?rooms=3&pricemin=2500
Я уже проверял здесь:
IIS URL Rewrite не работает со строкой запроса
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference
https://msdn.microsoft.com/en-us/library/ms972974.aspx
Кажется, мне нужно использовать QUERY_STRING
серверную переменную. На самом деле я просто хочу добавить параметры строки запроса, без необходимости писать специальное сопоставление для каждого параметра. Я думал, что могу решить эту проблему с помощью свойства appendQueryString="true"
, но это явно не работает.
Как я могу убедиться, что мое правило перезаписи работает также с параметрами строки запроса?