Webconfig URL переписать, чтобы скрыть Classic ASP ext, но не .aspx или другой ext - PullRequest
0 голосов
/ 15 июня 2019

Мне удалось скрыть расширение .asp, но оно также удаляет любые другие расширения и указывает на .asp Я знаю, что это просто проблема конфигурации, но у меня нет опыта настройки файла webconfig, и я удивляюсь, есть ли у кого-нибудь быстрое решение, чтобы сэкономить мне несколько часов! Код, как у меня ниже, из части файла webconfig

<rewrite>
  <rules>
    <rule name="Hide .asp Ext">
      <match url="^(.*)$" ignoreCase="true" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          <add input="{REQUEST_FILENAME}.asp" matchType="IsFile" />
        </conditions>
        <action type="Rewrite" url="{R:0}.asp" logRewrittenUrl="true" />
      </rule>
      <rule name="Redirect .asp Ext" stopProcessing="true">
         <match url="^(.*).asp" ignoreCase="true" />
           <conditions logicalGrouping="MatchAny">
            <add input="{URL}" pattern="(.*).asp" />
           </conditions>
           <action type="Redirect" url="{R:1}" />
       </rule>
  </rules>
</rewrite>

Ответы [ 3 ]

1 голос
/ 15 июня 2019

Мне кажется, первое правило сначала преобразует все в расширение .asp?

Попробуйте удалить первое правило.

0 голосов
/ 15 июня 2019

У вас есть два правила.Похоже, что первые совпадения во всех запросах и «переписывает» их, чтобы иметь расширение .asp.Второй совпадает с .asp, а затем выполняет какое-то перенаправление.

Из вашего вопроса непонятно, как вы хотите «скрыть» эти файлы.Если вы хотите отклонить все запросы к .asp, вам будет гораздо лучше добавить фильтр запросов «Расширения файлов» https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/fileextensions/index

0 голосов
/ 20 июня 2019

Попробуйте это? Кажется, работает на моем тестовом сервере.

        <rule name ="redirect .asp to none" stopProcessing="true">
            <match url="(.*)\.asp$" />
            <action type="Redirect" url="{R:1}" redirectType="Permanent" />
        </rule>                  
        <rule name="hide .asp extension" stopProcessing="false">
          <match url="(.*)" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="{R:1}.asp" />
        </rule>
...