2010-08-06 5 views
0

Ahoy,Ajax не работает на Nginx/Wordpress

я бегу WordPress 3x на Nginx, и все мои Ajax звонки разбиты. точно такой же WordPress отлично работает на Apache.

Я как-то исправил вызов ajax для работы с nginx, удалив «index.php» из всех вызовов jquery.post(), но я не смог исправить остальные вызовы одинаково.

в основном изменения были: для Nginx линия:

jQuery.post('index.php?ajax=true', form_values, function(returned_data) { 

был заменен:

jQuery.post('?ajax=true', form_values, function(returned_data) { 

я подозреваю, что проблема заключается в файле конфигурации Nginx с правилами перезаписи. Там вы с моей конфигурацией

if (!-e $request_filename) { 
rewrite ^.+/?(/wp-.*) $1 last; 
rewrite ^.+/?(/.*\.php)$ $1 last; 
rewrite ^(.+)$ /index.php?q=$1 last; 
} 


location ~ \.php$ { 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME /xxx/public$fastcgi_script_name; 
include fastcgi_params; 
} 
} 

ответ

1

Возможно, вы находитесь в каталоге или в «виртуальном» каталоге в URL-адресе браузера?

Если, например, вы находитесь на сайте www.myblog.com, это должно работать, но на www.myblog.com/my-category/my-post/ это, вероятно, не будет.

Вы проверили свое тестирование с того же самого URL-адреса на сайте Apache и на сайте Nginx?

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

jQuery.post('/index.php?ajax=true', form_values, function(returned_data) { 
+0

«Вы прошли тестирование с того же самого URL-адреса на сайте Apache и на сайте Nginx?» Да Я тестировал точно такое же приложение и URL-адреса. Мой URL-адрес всегда похож на www.blog.com/post-name. Я не пробовал использовать «/index.php?ajax=true», но с «? Ajax = true» и работал в случае, не работая во всех других случаях. – user356549

+0

Я рекомендую тогда, чтобы вы попытались поставить ведущую косую черту перед index.php, поскольку она направит действие на файл root.php сайта. Он должен работать, независимо от того, используете ли вы Nginx или Apache. – Christoffer

+0

Еще один совет: вы запускаете Ajax-скрипт при использовании Firefox и активируете консоль Firebug. Затем вы можете увидеть, что Ajax-вызов сделан и какой результат вы получаете от него. Вероятнее всего, вы получаете ошибку 404. – Christoffer

Смежные вопросы