URL IIS Переписать часть имени файла как папку - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы использовать часть имени файла в качестве имени папки, мой редирект работает, но перезапись не работает, это мой web.config (также есть правило для удаления расширения файла):

Оригинал: https://www.ipressnet.com.br/v6/client_tracking.aspx?id=x

Переписать: https://www.ipressnet.com.br/v6/client/tracking?id=x

ЭТО РАБОТАЕТ:

<rule name="RemoveASPx" enabled="true" stopProcessing="false">
  <match url="(.*)\.aspx" />
  <action type="Redirect" url="{R:1}" redirectType="Permanent" />
</rule>

<rule name="AddASPx" enabled="true">
  <match url=".*" negate="false" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
  </conditions>
  <action type="Rewrite" url="{R:0}.aspx" />
</rule>

ЭТО НЕ РАБОТАЕТ:

<rule name="RemoveClient" enabled="true" stopProcessing="false">
  <match url="^v6/?$|^client_(.*)$" />
  <action type="Redirect" url="client/{R:1}" />
</rule>

<rule name="AddClient" enabled="true">
  <match url="^v6/client/(.*)$" negate="false" />
  <action type="Rewrite" url="v6/client_{R:1}.aspx" />
</rule>

Я ценю любую помощь, спасибо!

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете написать RemoveASPx и RemoveClient в одном и том же правиле.
Следующее правило может удовлетворить ваши требования.

<rule name="rewrite rule" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{URL}" pattern="^/v6(.*)client_(.*)\.aspx$" />
                </conditions>
                <action type="Redirect" url="v6{C:1}client/{C:2}" redirectType="Temporary" />
            </rule>
            <rule name="(.*)" enabled="false">
                <match url="(.*)" />
                <conditions>
                    <add input="{URL}" pattern="^/v6/client/(.*)" />
                </conditions>
                <action type="Rewrite" url="v6/client_{C:1}.aspx" />
            </rule>

<rule name="r1" stopProcessing="true">
   <match url="v6/(client)?(_)?(.*).aspx" ignoreCase="false" />
    <action type="Rewrite" url="v6/{R:1}/{R:3}" />
</rule>
...