Проблема не в вашем браузере, а в веб-сайте:
% curl -LI http://minetest.net/download.php
HTTP/1.1 301 Moved Permanently
Server: nginx/1.7.12
Date: Thu, 15 Oct 2015 10:39:48 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://www.minetest.net/download.php
HTTP/1.1 200 OK
Server: nginx/1.7.12
Date: Thu, 15 Oct 2015 10:39:48 GMT
Content-Type: application/x-httpd-php
Content-Length: 382
Connection: keep-alive
Last-Modified: Tue, 06 Oct 2015 20:15:30 GMT
Access-Control-Allow-Origin: *
Expires: Tue, 13 Oct 2015 08:03:51 GMT
Cache-Control: max-age=600
Accept-Ranges: bytes
Via: 1.1 varnish
Age: 0
X-Served-By: cache-ams4125-AMS
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1444905591.411330,VS0,VE85
Vary: Accept-Encoding
X-Celeron55s-Proxy-Cache: MISS
X-Celeron55s-Proxy-Thinks-This-Is: Dynamic content
Обратите внимание на строку Content-Type: application / x- httpd-php
. nginx не должен обслуживать вас сам по себе PHP, он должен обслуживать вас в результате обработки PHP на стороне сервера и возвращать содержимое HTML с помощью Content-Type: text / html
. Поскольку ваш браузер не умеет отображать файлы с mimetype application / x-httpd-php
, он загружает его.
Это проблема исключительно сервера, а не вашего браузера. Ваш браузер сделал самое разумное, что мог, загрузив этот файл. Попросите веб-мастера вместо этого исправить установку PHP / nginx. : -)
Кстати, похоже, что страница PHP пытается перенаправить вас на эту страницу загрузки, на которую вы могли бы просто перейти.
Во-первых, позвольте мне начать с того, что это не ответ на ваш вопрос, но я надеюсь, что это поможет прояснить, что происходит. Я подозреваю, что то, что вы думаете, может не происходить на самом деле. Рассмотрим этот простой пример:
# The 'writer' reads input from standard input and
# echos it to standard output. It handles SIGINT by
# printing INT to standard output.
$ cat writer
#!/bin/bash
function foo() {
echo "INT"
}
trap foo INT
while read x; do echo $x; done
# The 'reader' reads input from standard input and pipes what is
# read to 'sed', which converts it to upper case. It ignores SIGINT.
# When it receives EOF on standard input, it writes "done".
$ cat reader
#!/bin/bash
trap '' INT
cat | sed -e 's/\(.*\)/\U\1/'
echo "done"
Теперь, когда я запускаю оба, я передаю вывод writer
в reader
:
$./writer |./reader
hello
HELLO
^CINT
^CINT
^CINT
world
WORLD
^D
done
$
Скрипт writer
считывает данные со стандартного ввода и записывает на стандартный вывод — канал. Скрипты reader
считывают со стандартного ввода — канала — и записывают на стандартный вывод. Когда я нажимаю Ctrl-C
, writer
пишет «INT»; reader
игнорирует сигнал (несколько раз ). В конце концов, я ввожуCtrl-D
(EOF ), и writer
завершается. Когда reader
получает EOF, он завершает работу и пишет "done".
Обратите внимание, что reader
игнорирует SIGINT более одного раза, и что ни канал, ни sed
не прерываются, когда writer
обрабатывает SIGINT.