Переписывание URL-адресов в IIS7 - PullRequest
3 голосов
/ 11 января 2012

Я следую http://learn.iis.net/page.aspx/806/seo-rule-templates/,, что является почти идеальным руководством по созданию SEO-ориентированных URL в IIS7.

У меня есть одна проблема:

Если я создаю правилопереписать www.domain.com/contact/ Я получаю в web.config:

<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="?p={R:1}" />
</rule>

Но тогда я не могу сделать www.domain.com/contact/send/.

Если я создаю правило для перезаписи www.domain.com/contact/send/ Я получаюв web.config:

<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="?p={R:1}&amp;a={R:2}" />
</rule>

Но тогда я не могу сделать www.domain.com/contact/

Оба правила делают так, что я не вижу никаких сценариев, css og изображений из моегоПапки /scripts/, /css/ и /images/.

Как создать правило для сопоставления обеих и НЕ для совпадения с тремя папками, упомянутыми выше?

1 Ответ

3 голосов
/ 17 января 2012

Ваше правило может быть примерно таким (я расширил и прокомментировал его для более легкого понимания и возможного редактирования):

^
    (
        (?!css|scripts|images)  # The directories you don't want to match
        [^/]+                   # The matched directory
    )
    (
        /
        (
            ([^/]+)             # Optional part
            /?                  # Optional trailing slash
        )?
    )?
$

Что означает следующее:

<match url="^((?!css|scripts|images)[^/]+)(/(([^/]+)/?)?)?$" />

URL-адрес перезаписи должен быть обновлен до: ?p={R:1}&amp;a={R:4} из-за изменений в количестве перехватов нового регулярного выражения.

...