这几天遇到的跨不过的坑

好死不死,非要用原始的submit提交表单。

这时问题来了,后台php状态返回404。

而且感觉一开始是200,然后接着404。

原因很简单,我这个php文件引用了另外一个文件用于获取用户登录状态。

一开始我以为是引用的路径不对。

事实上,当我把报错提示打开之后,发现如果路径真的不对的话,就会在浏览器上看到php的报错,但是并没有报错。

显然,404是nginx弄出来的。

那么肯定是nginx的config不对,然而,如果我用ajax方法来提交,就不会有问题。

看了半天nginx及vhost的conf,看来看去,看不出个所以然来。

从逻辑上说,这有点像后端的防盗链或反跨域机制。

然而,一般的nginx防盗链方案怎么也得定义一个$invalid_referer。这个问题里似乎并没有这种事。

从php跳到php的时候也不会有问题,就是html跳php就有问题,不管是_self还是_blank,post还是get。

有几个地方可疑,一是本站的conf中拦截的location最后有一个:
location ~ /\.
{
deny all;
}

按说这个意思是\后直接带个.的方式,直接拒绝访问。但是这和require没关系啊。

还有一个地方可疑

enable-php.conf文件
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

很显然404就是它弄出来的,但这也没错啊。

照这架式,就是fastcgi.conf的问题。

这个问题先留着吧。其实基本上不也不需要非ajax的提交。

现在做事,太容易被小问题牵绊了,还是要直奔目的而去。

发表评论

电子邮件地址不会被公开。 必填项已用*标注