У меня есть следующее правило перезаписи:
<rewrite url="^/Membership/(.+)/(.+)/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$3&f=$4"/>
, которое, как я ожидаю, должно работать с этим URL:
/Membership/Benefits/Member-Groups/Sub-Groups/Motorcycle-Live.aspx
Однако на моей странице этот перезаписанный URLсоответствует (/Membership/Index.aspx), я получаю FileName
("f" в моей строке запроса) и ParentFileName
("parentf" в моей строке запроса) для использования в запросе для получения информации о текущей странице.
- Значение
FileName
в этом случае составляет Sub-Groups,Motorcycle-Live.aspx
(когда я ожидал, что оно будет Motorcycle-Live.aspx
) - Значение ParentFileName в этом случае равно
Member-Groups
(когда я ожидал, что это будут «Подгруппы»)
У меня есть несколько других правил переписывания для более низких уровней, например:
<rewrite url="^/Membership/(.+)" to="/Membership/Index.aspx?f=$1"/>
<rewrite url="^/Membership/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$1&f=$2"/>
<rewrite url="^/Membership/(.+)/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$2&f=$3"/>
Они будут работать со следующими примерами URL (соответственно):
/Membership/Benefits.aspx
/Membership/Benefits/Member-Groups.aspx
/Membership/Benefits/Member-Groups/Sub-Groups.aspx
В этих случаях значения FileName
и ParentFileName
генерируются, как и ожидалось.Проблема возникает только на этой странице 5-го уровня.
Что я делаю не так?
РЕДАКТИРОВАТЬ
После удаления всех правил перезаписи в моем файле web.config, кроме этого:
<rewrite url="^/Membership/(.+)/(.+)/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$3&f=$4"/>
Я обнаружил, что он работает сам по себе.Затем я попытался добавить их все по одному и менять порядок, пока он не заработал.Наконец я обнаружил, что работает следующий порядок правил:
<rewrite url="^/Membership/(.+)" to="/Membership/Index.aspx?f=$1"/>
<rewrite url="^/Membership/(.+)/(.+)/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$3&f=$4"/>
<rewrite url="^/Membership/(.+)/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$2&f=$3"/>
<rewrite url="^/Membership/(.+)/(.+)" to="/Membership/Index.aspx?parentf=$1&f=$2"/>
Так что просто изменим порядок, за исключением того, что я сохранил первое правило в той же позиции.