我试图在我的服务器上执行一个PHP文件在url /〜/ / / /~nik/t.php
(实际文件在/home/nik/public_html/t.php
)。 这是我的PHP设置的样子:
location ~ ^/~(.+?)(/.*)\.php$ { alias /home/$1/public_html; # What should this regex be? fastcgi_split_path_info ^/~nik/(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } include fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; }
我一直得到一个404,当我回答return 404;
条款的return 404;
,我可以看到错误:
Unable to open primary script: /home/nik/public_html/~nik/t.php (No such file or directory)
你可以看到我的configuration有什么问题,或者指向我有关如何做到这一点的文档? 不幸的是,先进的正则expression式知识是configurationnginx的要求。
事实上,这是你在那里犯的一个非常基本的正则expression式错误。
由于fastcgi_split_path_info
指令中的第二个捕获组是(/.*)
所以整个正则expression式^/~nik/(.+?\.php)(/.*)$
/~nik/t.php
将不匹配^/~nik/(.+?\.php)(/.*)$
/~nik/t.php
因为它没有跟着斜线。 问号在这里也没用,虽然这不是你看到的行为的原因。
正确的正则expression式应该是^/~nik/(.+\.php)(.*)$