我需要使用php处理一些特定的网址,例如:
http://10.0.0.1/orange
http://10.0.0.1/pear
http://10.0.0.1/apple
任何其他字符串,例如:
http://10.0.0.1/orange/
http://10.0.0.1/orangeee
http://10.0.0.1/ora.gif
http://10.0.0.1/orange.php
必须使用404或400(更好)阻止
这是我的服务器块:
server {
listen 10.0.0.1:80;
server_name 10.0.0.1;
root /usr/share/nginx/;
location ~ ^ (apple|orange|pear)$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/processor.php;
fastcgi_pass 127.0.0.1:9000;
expires -1;
}
}
它没有按预期工作:
请求:
POST http://10.0.0.1/orange
反应:
404
错误日志报告:
open() "/usr/share/nginx/orange" failed (2: No such file or directory)
P.S。简单的位置,如:
location /orange {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/processor.php;
fastcgi_pass 127.0.0.1:9000;
expires -1;
}
作品。
答案 0 :(得分:0)
你的正则表达式中有一个空格:^ (apple|orange|pear)$
删除^
之后的空格。
答案 1 :(得分:0)
将^
后的空格替换为/
,使正则表达式成为^/(apple|orange|pear)$