Это похоже на другую проблему в SO:
jQuery Ajax returning 404 Ошибка, но правильный ответ
, но приведенное выше очень специфично для wordpress.Кроме того, мое внутреннее чувство заключается в том, что моя проблема больше связана с настройкой сервера Apacher, но я в этом немного новичок.
Вот в чем дело ... У меня есть этот код Jquery AJAX:
events: function(start, end, callback) {
$.ajax({
type: "POST",
// This Works -->
url: 'http://calendar.localhost/index.php/myfeed/',
// This Fails -->
//url: 'http://calendar.localhost/myfeed/',
dataType: 'json',
cache: false,
data: {
appointment_id: _appointmentId
},
success: function(d) {.... },
error: function(x,s,e) {... }
});
Когда я использую URL с index.php, все работает отлично.Однако, когда я использую файл без index.php, я получаю ошибку 404, даже если данные (json) возвращаются нормально (см. Ниже).
Кроме того, это происходит в новой системеЯ недавно обновился до: Debian 2.6.32 (amd64) PHP 5.3.3 Apache 2.2.16
Тот же код (т.е. / myfeed или без index.php) работает на моей старой системе: Fedora 8 (да,8 lol) PHP 5.2.x Apache 2.2.6
(Обратите внимание, что изначально я использовал '/ myfeed' для параметра url, который работал, найти в моей "старой" системе. Любое решение, где у меня нетжестко закодировать домены было бы приемлемо для меня.)
Так что либо я столкнулся с некоторой разницей в одном из этих 3 (то есть, в изменении версий php, apache или linux), либо есть что-то, что мне нужноизменить в моей новой настройке Apache (я думаю, что-то с корневым каталогом '/' для виртуальных хостов, который я использую для этого сайта на моем локальном хосте ... возможно, он думает, что ответ от другого домена, но яне понимаю, как это может быть, если он работает с index.php, но faил без него ???).
Если у кого-нибудь есть решение или идеи, которые я бы попробовал, это было бы очень приветствуется !!!!
Вот подробности из Firebug для нерабочего случая:
POST http://calendar.localhost/myfeed 404 Не найдено
Headers tab:
Response Headersview source
Date Tue, 22 Mar 2011 06:22:37 GMT
Server Apache/2.2.16 (Debian)
X-Powered-By PHP/5.3.3-7+squeeze1
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 220
Keep-Alive timeout=15, max=90
Connection Keep-Alive
Content-Type text/html
Request Headersview source
Host calendar.localhost
User-Agent Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110302 Iceweasel/3.5.16 (like Firefox/3.5.16)
Accept application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Referer http://calendar.localhost/index.php/client
Content-Length 36
Response tab:
{"eventArray":[{"id":"2","notes":"test client Thurs","start":1299951000000,"end":1299960900000},{"id":"3","notes":"test bb334343","start":1300064400000,"end":1300068000000},{"id":"5","notes":"New appt dafdaf","start":1300462200000,"end":1300465800000}, {"id":"35","notes":"japan2","start":1300539600000,"end":1300545000000},{"id":"47","notes":"helo customer test","start":1300471200000,"end":1300475700000},{"id":"50","notes":"test 2 x email","start":1300455000000,"end":1300455900000}]}
Также:
~ mod_rewrite включен?Да, я верю в это (мои страницы CI перенаправляются так, как должны).
~ .htaccess в каталоге CI www?Да:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
Спасибо,
Питер
PHP-код (по запросу):
public function viewEvent()
{
...
$appointmentData['startDate'] = $startDate;
$appointmentData['startTime'] = $startTime;
$data = array( 'eventData'=>$appointmentData );
echo json_encode($data);
}
Кроме того, журнал Apache дает:
[Tue Mar 22 10:45:03 2011] [error] [client 127.0.0.1] File does not exist: /var/www/calendar/myfeed, referer: http://calendar.localhost/