2010-08-06 16 views
0

嗨,阿賈克斯不工作的Nginx/WordPress的

我對Nginx的運行WordPress的3倍,我所有的Ajax調用被打破。完全相同的WordPress在Apache上運行良好。

我已經修正了某種方式的ajax調用通過從所有jquery.post()調用中刪除'index.php'與nginx一起工作,但我無法以相同的方式修復其他調用。

基本變化是: 爲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/它可能不會。

您是否從Apache站點和Nginx站點上的完全相同的URL位置完成了測試?

您是否曾在路徑前用斜槓嘗試確保它是被調用的根腳本?

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

「您是否從Apache網站和Nginx網站上的完全相同的URL位置完成了測試?」 是的,我測試了完全相同的應用程序和網址。我的網址總是類似於www.blog.com/post-name。 我沒有試過用「/index.php?ajax=true」,而是用「?ajax = true」,並且在一個案例中工作,而不是在所有其他情況下工作。 – user356549 2010-08-06 13:06:44

+0

然後我建議你試着在index.php之前加一個前導斜槓,因爲它會將動作引導到網站的根index.php文件。無論您是運行Nginx還是Apache,它都應該可以工作。 – Christoffer 2010-08-06 20:26:22

+0

另一個提示是您在使用Firefox時運行Ajax腳本並激活了Firebug控制檯。然後您可以看到Ajax調用已經完成,並且您從中獲得了什麼結果。你很可能會遇到404錯誤。 – Christoffer 2010-08-06 20:30:12