Как добавить RedirectType во внешний файл конфигурации в asp.net

У меня есть отдельный файл .config в корневом каталоге приложения, который содержит Mapped URLS for redirect и ссылается на этот файл .config в web.config для 301 Permanent Redirect! Это прекрасно работает.

См. справочную ссылку

Теперь я также хочу добавить несколько ссылок, которые будут перенаправляться как код состояния 302. Как добавить перенаправление 302 во внешний файл .config и соответствующим образом перенаправить.

rewritemaps.config

<rewriteMaps>
    <rewriteMap name="Redirects">
       <add key="/oldcellphone" value="/newcellphones.aspx" />
    </rewriteMap>
</rewriteMaps>

Можем ли мы указать тип перенаправления, например 301/302, в этом файле?

web.config

<system.webServer>
     <rewrite>
      <rewriteMaps configSource="rewritemaps.config">
        </rewriteMaps>
          <rules>
            <rule name="Redirect rule1 for Redirects">
              <match url=".*" />
              <conditions>
                <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
              </conditions>
              <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent"/>
            </rule>
          </rules>
        </rewrite>
    </system.webServer>

ПРИМЕЧАНИЕ. В настоящее время все ссылки из файла 'rewritemaps.config' установлены на 301 Status в web.config.

Можем ли мы добавить следующее в rewritemaps.config и соответствующим образом перенаправить:

<add key="/oldcellphone" value="/newcellphones.aspx" [RedirectType=301] />
<add key="/oldphone" value="/newphones.aspx" [RedirectType=302] />

Есть около 1000 links of 301 Status и около 400 links for 302 Status. Если это невозможно в external file(rewritemaps.config), пожалуйста, предложите предпочтительный способ?

Обновление: Можете ли вы помочь мне перенаправить на другой сайт (другой домен), если определенная строка совпадает с запрошенным URL-адресом. Например: если запрошенный URL-адрес содержит «/hm1», перенаправьте на другой сайт. т. е. http://www.google.com

Web.config

<rule name="othersite" stopProcessing="true">
<match url="^/hm1$" />
<action type="Redirect" url="http://www.google.com" redirectType="Found"/>
</rule>

.aspx

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="/hm1">other site (http://www.google.com)</asp:HyperLink>

person SHEKHAR SHETE    schedule 26.11.2014    source источник


Ответы (1)


Можете ли вы добавить RedirectType в карту перезаписи? Нет, к сожалению нет.

Чтобы достичь того, что вы пытаетесь сделать, вам нужно создать две карты перезаписи и два правила перезаписи — одно для перенаправления 301 и одно для перенаправления 302.

Вот пример того, как это может выглядеть:

<rewrite>
  <rules>
    <rule name="301Redirects" stopProcessing="true">
      <match url=".*" />
      <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent" />
      <conditions>
        <add input="{301Redirects:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
    </rule>
    <rule name="302Redirects" stopProcessing="true">
      <match url=".*" />
      <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Found" />
      <conditions>
        <add input="{302Redirects:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
    </rule>
  </rules>
  <rewriteMaps>
    <rewriteMap name="301Redirects">
      <add key="/oldurl" value="/newurl" />
    </rewriteMap>
    <rewriteMap name="302Redirects">
      <add key="/oldcellphone" value="/newcellphones.aspx" />
    </rewriteMap>
  </rewriteMaps>
</rewrite>
person Tom Hall    schedule 27.11.2014
comment
привет @Tom Hall, я попробую еще один вопрос, можем ли мы перенаправить на другой домен, если определенная строка совпадает с запрошенным URL? Пожалуйста, смотрите раздел «Обновление» в сообщении и помогите мне ..! - person SHEKHAR SHETE; 27.11.2014
comment
Да, вы можете перенаправить куда угодно. - person Tom Hall; 27.11.2014
comment
Спасибо! да это работает! но моя переадресация на другой сайт не будет работать, пожалуйста, помогите мне? Пожалуйста, посмотрите правило, которое я добавил, и помогите мне тоже..? я пытался перенаправить на другой сайт, используя вышеупомянутое «Правило», упомянутое в разделе обновления, но это не сработает ..! - person SHEKHAR SHETE; 27.11.2014
comment
@TomHall, как мне перевести эти apache правила в iis (web.config) --› sitepoint.com/community/t/ спасибо! - person Fábio Zangirolami; 06.01.2019