JQuery - GET News.html 404 (не найдено)

По какой-то причине это не работает:

$.ajax({
    url: "News.html",
    cache: false,
}).done(function(data) {
    $("#content").load(data);
});

Это дает мне:

GET http://127.0.0.1/News.html 404 (Not Found)

Но по какой-то причине открытие этого URL вручную (копирование вставить URL) работает просто отлично. И я думал, что это как-то связано с кешем браузера, поэтому я добавил параметр cache: false в функцию ajax, но даже тогда.. argh..

Также он показывает не как запрошенный URL-адрес в моем файле access.log..

Для информации, я думаю, я запускаю:

  • Lighttpd
  • php как fast-cgi через localhost: порт
  • mapped.html = > .php
  • Запуск OpenBSD 5.3

и без комментирования (в /etc/php.ini):

  • cgi.fix_pathinfo = 1

также:

# ls *.html
News.html     index.html

И вот заголовки запроса для News.html:

Request URL:http://127.0.0.1/News.html
Request Method:GET
Status Code:404 Not Found

Заголовок запроса

Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:127.0.0.1
Referer:http://127.0.0.1/index.php
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest

Заголовки ответов

Content-type:text/html
Date:Tue, 16 Jul 2013 21:55:05 GMT
Server:lighttpd/1.4.32
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.21

Checkpoint

Заключение из комментариев пока что это может быть не проблема jQuery. Учитывая, что сервер отвечает на все данные (я проверил необработанные данные), и он содержит все, но ответ заголовок говорит 404.

Значение, данные найдены, но заголовок говорит 404... это странно, если не сказать больше.

скручивание

curl 'http://127.0.0.1/News.html' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: 127.0.0.1' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://127.0.0.1/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' --compressed
Here you'll soon find a facebook feed, among other things :)

Тест Zerkms

# echo "wham bam" > zerkms_doesnt_believe.html
# 

enter image description here

Файлы конфигурации

Журналы ошибок и что не

тест cURL

A cURL copy paste test

Ручной тест FastCGI через клиента Python:

# python fcgi_app.py  
{'FCGI_MAX_CONNS': '1', 'FCGI_MPXS_CONNS': '0', 'FCGI_MAX_REQS': '1'}

После некоторого возиться, я понял, как работает протокол FastCGI, и я нашел клиента, который соответствовал моим потребностям, достаточно смешно, что он соответствовал имени моего script, поэтому здесь вывод:

# python fcgi_app.py  
('404 Not Found', [('x-powered-by', 'PHP/5.3.21'), ('content-type', 'text/html')], '<html>\n\t<head>\n\t\t<title>test php</title>\n\t</head>\n<body>\nChecking</body>\n</html>', '')

И Здесь источник

Даю мне вывод, что это на самом деле проблема с PHP (даже если я ненавидел на lighttpd за то, что не соблюдал код 200 php, мне нужно ответить.. И для этого мне жаль.Если пойти bash a немного на PHP и посмотреть, поможет ли мне прийти к выводу)

Временное решение

В этом случае проблема будет решена в верхней части вашей .php-страницы. Обратите внимание, что это обходное решение, оно будет работать, но это не долгое время.

<?php
    header("HTTP/1.0 200 Found");
?>

Ответ 1

Это немного пахнет проблемой с одним и тем же источником. Указанный вами путь может вызвать проблему. Попробуйте

$.ajax({
    url: "/News.html",
    cache: false,
}).done(function(data) {
    $("#content").load(data);
});

И позвольте мне (нам) знать, помогает ли это.

Ответ 2

В этот раз меня немного загнали. Чувствуя некоторые навязчивые побуждения, я установил lighttpd и php5 на новую виртуальную машину Ubuntu 12.10 (у нее не было BSD). Мне пришлось изменить на poll из kqueue, но кроме этого я использовал ваш lighttpd.conf. И все сработало нормально.

Итак, я установил ваш файл php.ini и статус 404 BAM http при возврате правильного содержимого. Итак, это сузило его до php-cgi.

Оказывается, что при запуске службы он будет записывать

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php-5.3/modules/pdo.so' - /usr/local/lib/php-5.3/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Таким образом, идентификатор выполнил быстрый поиск и изменил одну строку в php.ini из

extension_dir = "/usr/local/lib/php-5.3/modules"

к

extension_dir = "/usr/lib/php5/20100525"

перезапустил php-cgi и статус 200 voila, чтобы идти вместе с контентом.

Ответ 3

После настройки нового сервера OpenBSD 5.3 и установки с вашими конфигурационными файлами я смог сузить основную причину.

В файле lighttpd.conf у вас есть server.chroot = "/var/www/", поэтому все его имена пути исключают /var/www с фронта. Процесс php-fastcgi не chrooted, поэтому он имеет немного другое представление о файловой системе.

Решение №1: Не зациклируйте lighttpd и измените значения server.document-root, accesslog.filename и server.errorlog на абсолютные пути.

Решение №2: Используйте php-fpm или аналогично, чтобы PHP chroot знал/способен

Ответ 4

Используйте простой способ jQuery.load():

$(document).ready(function () {
    $("#content").load('News.html');
});