Перенаправление IIS 301 из вложенной папки в корневую папку

#iis #redirect #http-status-code-301

#iis #перенаправление #http-status-code-301

Вопрос:

Содержимое веб-сайта клиента находилось во вложенной папке на их сайте, например www.customersite.com/content . С тех пор он был перемещен в корневую папку, например www.customersite.com

Мы добавили перенаправление IIS 301 в конфигурацию сайта, которая выглядит следующим образом:

 <rewrite>
  <rules>
   <rule name="Redirect to Root" stopProcessing="true">
     <match url=".*" />
       <conditions>
        <add input="{HTTP_HOST}" pattern="^customersite.com/content/$" />
       </conditions>
      <action type="Redirect" url="http://www.customersite.com/{R:0}"
        redirectType="Permanent" />
   </rule>
  </rules>
</rewrite>
  

На сайте были ссылки, которые выглядели как www.customersite.com/content/?p=12 можно ли изменить перенаправление на автоматическое перенаправление на www.customersite.com/?p=12 если пользователь вводит старый www.customersite.com/content/?p=12 адрес? Если да, то как?

Спасибо!

Ответ №1:

Я не могу протестировать это прямо сейчас, но это должно сработать:

 <rewrite>
  <rules>
   <rule name="Redirect to Root" stopProcessing="true">
     <match url="^content/(.*)" />
       <conditions>
        <add input="{HTTP_HOST}" pattern="^(www.)?customersite.com$" />
       </conditions>
      <action type="Redirect" url="http://{C:0}/{R:1}" redirectType="Permanent" />
   </rule>
  </rules>
</rewrite>
  

Ответ №2:

Любой файл, который www.customersite.com/content/?p=12 на самом деле это будет одна из страниц по умолчанию в IIS, так что страница действительно будет выглядеть примерно так www.customersite.com/content/index.aspx?p=12 предполагая, что ваш файл по умолчанию — index.aspx, он может быть по умолчанию и т.д.

Просто добавьте файл в это местоположение и задайте код, который принимает строку запроса и выполняет перенаправление, вы также можете изменить состояние заголовка из кода, чтобы показать, что это 301.