我有一个WordPress 3.5.1+nginx配置。其nginx配置如下:
server {
root /mysite/public_html;
server_name wp.mysite;
location / {
try_files $uri $uri/ /index.php;
index index.php index.html index.htm;
}
location ~ \\.php(.*)$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
}
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /mysite/public_html$fastcgi_script_name;
}
}
注意WordPress的
index.php
在中
/mysite/public_html/
.
我也在使用nginx helper. 因为我只运行一个网站,所以我只使用了它的permalink美化功能。
我注意到我的自定义脚本(WordPress之外)返回404个标题。例如,如果我把index.php
进入/mysite/public_html/my/
, 并将浏览器指向http://wp.mysite/my/
, 即使使用正确的MIME类型,但使用HTTP 404头,脚本也可以正常执行。
放置header("Status: 200 OK");
(对于fastcgi)不起作用。实际上,它似乎忽略了其他标题,例如Cache-Control
和Expires
也它确实起作用了Content-type
正如我前面提到的。实际上,其标题部分是:
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) == \'cgi\')
header("Status: 200 OK");
else
header("HTTP/1.1 200 OK");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-type: image/jpeg");
imagejpeg($this->im, null, 80);
我可以很好地看到JPEG。但不发送其他标头。我想知道从哪里开始调试这个问题?非常感谢。