Если вместо открытия страницы браузер предлагает сохранить файл — часто с расширением .exe или вовсе без расширения — дело не в вирусе на сайте, а в том, что сервер отдал неверный заголовок Content-Type или не обработал скрипт как код. Браузер получает набор байт, не понимает, что это HTML, и просто скачивает его как бинарный файл.
Почему так происходит
- Веб-сервер настроен неправильно: для файла с расширением .php, .html или без расширения указан MIME-тип application/octet-stream или application/x-msdownload вместо text/html.
- PHP-обработчик не подключён или отключён на хостинге — сервер отдаёт исходный код скрипта как обычный файл, а не результат его выполнения.
- В .htaccess (Apache) или конфиге Nginx есть директива вроде ForceType application/octet-stream или AddHandler, оставшаяся от старых настроек или установленная по ошибке.
- Антивирус или сама операционная система переименовала загруженный ранее файл, добавив .exe к «подозрительному» расширению — это происходит на стороне пользователя, а не сайта.
Как проверить, в чём причина
Откройте страницу и посмотрите вкладку Network в инструментах разработчика (F12): выберите нужный запрос и проверьте значение заголовка Content-Type в ответе сервера. Если там указано что-то отличное от text/html, проблема на стороне сервера. Также можно проверить заголовки из терминала:
curl -I https://ваш-сайт.ru/страница
Если ответ содержит Content-Type: application/octet-stream для HTML-страницы — это и есть причина скачивания.
Что делать, если это ваш сайт
- Проверьте .htaccess на наличие строк с ForceType, AddType или AddHandler — при необходимости удалите или исправьте их.
- Убедитесь, что на хостинге включён и правильно выбран нужный модуль PHP (в панели управления обычно есть выбор версии PHP для домена).
- В конфиге Nginx проверьте секцию types и наличие строки include mime.types — она отвечает за сопоставление расширений и MIME-типов.
- После правок обязательно очистите кэш сервера и CDN, если он используется, иначе браузеры будут получать старый заголовок ещё какое-то время.
Что делать, если это чужой сайт
Если файл скачивается на стороне пользователя при переходе на внешний ресурс, сначала проверьте загрузку в другом браузере или в режиме инкогнито — часто дело в кэше или расширениях браузера. Если файл действительно приходит с расширением .exe, открывать его не стоит: сообщите владельцу сайта о проблеме и не запускайте скачанный файл.