Как изменить следующие правила для работы с перезаписью URL 2.0 и IIS 7.0 - PullRequest
1 голос
/ 01 июля 2010

У меня есть такой URL:

/ eng / myfolder / mycategory.aspx

Я хотел бы преобразовать его в что-то вроде:

index.aspx?FolderId = 2 & LanguageId = 1 & CategoryID = 12

В слове, которое я хочу "написать",

eng => languageId = 2 и myfolder => FolderId = 2 и mycategory .....

Я не знаю, ясно ли я проясняю, но

Спасибо.

с http://mywebsite.com/fr/default

Прямо сейчас у меня есть:

 <add key = "/en/default"  value = "default.aspx?LanguageId=1" />

 <add input = " {Rewrite:{REQUEST_URI}}" pattern = "default.aspx\?(.+)" />

 <action type="rewrite" url="default.aspx?{C:1}" appendQueryString="False" /> 

Но я хочу что-то более глобальное, например:

 <add key = "/en"  value = "LanguageId=1" /> 

 <add input = " {Rewrite:{REQUEST_URI}}" pattern = "(.+)" /> 

  < action type="rewrite" url="default.aspx?{C:1}" appendQueryString="False" />

1 Ответ

1 голос
/ 01 июля 2010

Вот как я это сделаю, в основном создаю три карты, одну для языков, папок и каталогов. Если у них большие наборы данных и, возможно, они часто меняются, я бы рассмотрел использование собственного провайдера, встроенного в C #, но сейчас просто:

<configuration>
    <system.webServer>
        <rewrite>
            <rewriteMaps>
                <rewriteMap name="Folders">
                    <add key="myfolder" value="2" />
                    <add key="anotherfolder" value="3" />
                </rewriteMap>
                <rewriteMap name="Languages">
                    <add key="eng" value="2" />
                    <add key="spa" value="1" />
                </rewriteMap>
                <rewriteMap name="Categories">
                    <add key="mycategory" value="12" />
                    <add key="anothercategory" value="10" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="RewriteURLs" stopProcessing="true">
                    <match url="([^/]+)/([^/]+)/(.+?)\.aspx" />
                    <action type="Rewrite" url="/index.aspx?FolderId={Folders:{R:2}}&amp;languageid={Languages:{R:1}}&amp;CategoryID={Categories:{R:3}}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
...