Перезапись URL с помощью IIS7 - PullRequest
3 голосов
/ 19 октября 2011

У меня есть веб-сайт, размещенный на IIS7, и я хотел бы включить перезапись URL на него

Мой текущий URL-адрес blog.mysite.com/article.aspx?name=marriage

Я хочу переписать его на

blog.mysite.com / брак

Я пробовал некоторые правила, но ничего не дало идеальное решение.

Пожалуйста, поделитесь своими идеями и было бы полезно для меня

спасибо всем

Шибинь

1 Ответ

2 голосов
/ 19 октября 2011

Если вы используете Microsoft Rewrite 2.0, тогда ваш шаблон будет иметь вид:

^ ([^ /] +) /? $

И ваш URL для перезаписи будет:

article.aspx? Name = {R: 1}

Чтобы просто перенаправить новую схему URL на старую, поместите ее в раздел system.webserver вашего web.config:

<rewrite>
  <rules>
    <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
      <match url="^([^/]+)/?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="article.aspx?name={R:1}" />
    </rule>
  </rules>
</rewrite>

Чтобы также выполнять перенаправления со старого на новый URL-адрес, чтобы старые URL-адреса автоматически обновлялись до новой схемы, и для включения обработки, которая перезапишет вывод html для использования новой схемы URL-адреса, вы можете заменить вышеприведенное на:

<rewrite>
  <rules>
    <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
      <match url="^article\.aspx$" />
      <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^name=([^=&amp;]+)$" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="false" />
    </rule>
    <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
      <match url="^([^/]+)/?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="article.aspx?name={R:1}" />
    </rule>
  </rules>
  <outboundRules>
    <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
      <match filterByTags="A, Form, Img" pattern="^(.*/)article\.aspx\?name=([^=&amp;]+)$" />
      <action type="Rewrite" value="{R:1}{R:2}/" />
    </rule>
    <preConditions>
      <preCondition name="ResponseIsHtml1">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>
...