nginx + php-fpm。重定向到PHP脚本
问题描述:
我的nginx的配置部分(成功合作)nginx + php-fpm。重定向到PHP脚本
... *config* ...
location ~ \.php$ {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php break;
}
set $nocache "";
include fastcgi_params;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/folder/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/folder/;
fastcgi_intercept_errors on;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key $host$request_uri;
# fastcgi_cache folder;
fastcgi_cache_valid 200 1m;
fastcgi_cache_bypass $nocache;
fastcgi_no_cache $nocache;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
fastcgi_send_timeout 900;
fastcgi_read_timeout 900;
}
现在我需要添加重写规则/我的/操作=> /my.php?operation
location /my/ {
rewrite ^(.*)$ /my.php?$1 break;
}
重写规则正在工作,但PHP文件正在下载,不执行。
我在Nginx的新手,所以我需要帮助
答
你的问题是,通过将break
你告诉nginx的你正在做,你不希望任何furtur处理的情况发生,所以location ~ \.php$
ISN没有进行,因此文件正在下载。
通过放入last
而不是告诉nginx重写并重新启动处理,这次它匹配location ~ \.php$
,因此文件正在处理中。
所以最终的解决办法是
location /my/ {
rewrite ^(.*)$ /my.php?$1 last;
}
虽然我通常倾向于把它写在一个简单的方法,因为你要配合整个事情
location /my/ {
rewrite^/my.php?$1 last;
}
您可以read the documentation看所有的标志及其含义。
尝试将'break'改为'last' –
@MohammadAbuShady是的,它有帮助。非常感谢你!如果你想 - 你可以放置你的答案,我检查它 – indapublic