Посмотрите 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
Тег
только управляет тем, что 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
Это можно сделать с помощью 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>