2010-01-24 3 views
2

Я использую urlrewriting.net для перенаправления запроса каскадного запроса стилей. Я пытался без этого сделать это. Вот переписывание, которое я добавил:Как перенаправить запросы изображений в другую папку с помощью urlrewriting.net

<add name="reportImagesRedirect" 
        virtualUrl="^~/estadisticas/(.*).png" 
        rewriteUrlParameter="ExcludeFromClientQueryString" 
        destinationUrl="~/images/$1" 
        ignoreCase="true" /> 

Я хотел бы знать, есть ли что-то в этом роде. Я пытаюсь связать все запросы http get, сделанные в одну папку, для перенаправления в папку с изображениями. Так, например, когда я делаю запрос как этот

http://localhost:8080/estadisticas/spines.png

Я хочу, чтобы веб-сервер, чтобы посмотреть изображение в

http://localhost:8080/images/spines.png

+0

virtualUrl = "^ ~/estadisticas /(.+). Png $" --- Обратите внимание, что регулярное выражение начинается с ^, а также заканчивается символом $. Это будет содержать запросы, так что если вы получите «~/estadicticas/somthing.png.aspx», он не попытается сопоставить изображение. Не то, чтобы это когда-либо было, это просто хорошая практика. –

ответ

1

Вам нужно перевернуть его.

<add name="reportImagesRedirect" 
       destinationUrl="~/images/$1.png" 
       rewriteUrlParameter="ExcludeFromClientQueryString" 
       virtualUrl="^~/estadisticas/(.+).png$" 
       ignoreCase="true" /> 

Here немного статье я писал об использовании UrlRewriting.Net для extensionless URL.

EDIT: Я немного изменил параметры. если вы оставляете расширения, вам необходимо иметь .png в конце как виртуального и назначения

EDIT: Кроме того, возможно, потребуется сделать следующее изменение в system.webServer теге

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    </modules> 
</system.webServer> 
+0

Ум ... порядок атрибутов абсолютно не отличается. – Chris

+0

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

+0

Зачем вам голосовать? Я не «JUST» изменил порядок атрибутов. Я изменил способ записи VirtualUrl и destinationUrl. VirtualUrl нуждается в Regex, в то время как DestinationUrl должен быть там, где находится фактический файл ... он также должен содержать расширение. –

0

Возможно, вам понадобится установить wildcard mapping. IIS не будет перенаправлять запросы на что-либо, кроме файлов ASP.NET (.aspx, .asmx, .axd, .ashx и т. Д.) В обработчик ASP.NET по умолчанию. Поскольку ваш переписывающий работает в обработчике ASP.NET, запрос на изображение никогда не достигнет его. Добавление подстановочного сопоставления заставляет IIS позволить ASP.NET (и, следовательно, обработчик перезаписи) обрабатывать все запросы, включая изображения.

+0

Я не рекомендую сопоставлять подстановочные знаки, это просто не нужно –

+0

также IIS7 и .NET 3.5 позволяют вам выполнять это [runAllManagedModulesForAllRequests = "true"] из вашего веб-сайта и устраняют необходимость сопоставления подстановочных знаков. –

+0

@ Rock: это абсолютно необходимо, если вы используете IIS 6 или IIS 7 в классическом режиме. Я никогда не предполагаю какой-либо конкретной версии. Кроме того, потерять плаксивое отношение. Я вижу, что вы отклонили мой ответ, потому что, по-вашему, я отказался от вашего, что не так. Не очень зрелый, ИМО. – Chris

Смежные вопросы