Как поймать неправильный запрос (URL) к моему приложению ASP.NET?

Посмотрите Apache mod_deflate документация, а именно, "сжатие все кроме изображений" пример. Это работало хорошо на меня и было бы помещено в .htaccess файл следующим образом:


        # Insert filter
        SetOutputFilter DEFLATE

        # Netscape 4.x has some problems...
        BrowserMatch ^Mozilla/4 gzip-only-text/html

        # Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip

        # MSIE masquerades as Netscape, but it is fine
        # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

        # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
        # the above regex won't work. You can use the following
        # workaround to get the desired effect:
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

        # Don't compress images
        SetEnvIfNoCase Request_URI \
        \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary

И, конечно, удостоверьтесь, что у Вас есть следующее в Вашем httpd.conf файл для включения mod_deflate:

LoadModule deflate_module libexec/apache2/mod_deflate.so

0
задан 19 May 2012 в 11:48
2 ответа

Тег ... только управляет тем, что ASP.NET будет делать при возникновении ошибки. Если вы обращаетесь к несуществующему каталогу, ошибка будет обработана IIS, а не ASP.NET.

Поэтому вам необходимо изменить обработку 404 IIS. Это можно сделать только с помощью файла applicationHost.config , который обычно доступен только с правами администратора. Ниже приведен отрывок из этого файла, который изменяет обработку 404 на настраиваемую страницу для определенного веб-сайта:

<location path="[Your Site Name]">
    <system.webServer>
        <httpErrors errorMode="DetailedLocalOnly">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="/your-404-handler.aspx" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</location>

Вы также можете изменить это с помощью IIS Mananger через: Сайты -> [Имя вашего сайта] -> Страницы ошибок -> 404

1
ответ дан 4 December 2019 в 21:47

Это можно сделать с помощью Microsoft URL Rewrite . Если модуль установлен, добавьте следующее правило в свой web.config. Любой запрос, не соответствующий "MyPage.aspx" (не зависящий от регистра), ответит путем выдачи HTTP 301 с MyPage.aspx в качестве нового местоположения. Вам нужно будет перечислить все допустимые URL в "условиях", хотя это альтернатива использованию пользовательских ошибок.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RedirectToMyPage" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{REQUEST_URI}" pattern="^MyPage.aspx$" negate="true" />
          </conditions>
          <action type="Redirect" url="MyPage.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Другой вариант - использовать URL Rewrite и customErrors, настроив customErrors на перенаправление 404 ошибок на страницу типа "/404Error.aspx" (которая не должна существовать), а затем иметь правило перезаписи URL, которое будет перенаправлять все запросы на "/404Error.aspx" на вашу домашнюю страницу. Это правило перезаписи URL будет выглядеть следующим образом:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RedirectToMyPage" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{REQUEST_URI}" pattern="^404Error.aspx$" />
          </conditions>
          <action type="Redirect" url="MyPage.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
0
ответ дан 4 December 2019 в 21:47

Теги

Похожие вопросы