php – Nginx – 将所有请求路由到单个脚本

前端之家收集整理的这篇文章主要介绍了php – Nginx – 将所有请求路由到单个脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 PHP脚本来处理脚本路由并做各种奇特的事情.它最初是为Apache设计的,但我正在尝试将它迁移到Nginx以用于我的一些盒子.现在,我正试图在测试服务器上解决问题.

因此,脚本的工作方式是使用.htaccess文件拦截目录(在Apache中)的所有HTTP流量.这是看起来像:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+$index.PHP [L]
</IfModule>

很简单.所有请求都通过index.PHP运行,简单明了.

我想在Nginx上模仿这种行为,但我还没有找到办法.有人有什么建议吗?

这是我的Nginx.conf文件的副本.请注意,它是专为我设计的,试图让它工作;主要是复制/粘贴工作.

user www-data;
worker_processes  1;

error_log  /var/log/Nginx/error.log;
pid        /var/run/Nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
        include         /etc/Nginx/mime.types;
        default_type    text/plain;
        include         /etc/Nginx/conf.d/*.conf;
        server {
                listen          80;
                server_name     swingset.serverboy.net;

                access_log      /var/log/Nginx/net.serverboy.swingset.access_log;
                error_log       /var/log/Nginx/net.serverboy.swingset.error_log warn;

                root            /var/www/swingset;

                index           index.PHP index.html;
                fastcgi_index   index.PHP;

                location ~ \.PHP {
                        include /etc/Nginx/fastcgi_params;
                        keepalive_timeout 0;
                        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                        fastcgi_pass    127.0.0.1:9000;
                }
        }
}
加上这个,
location / {
                    try_files $uri $uri/ /index.PHP;
            }

它的作用是首先检查$uri和$uri /是否存在为真实文件/文件夹,如果它们不存在则只需要通过/index.PHP(这是我的Zend框架设置,其中路由是通过索引完成的.PHP) – 当然如果你需要传递一些参数,只需在最后附加到/index.PHP a?q =并传递参数.

确保从0.7.27及更高版本开始提供try_file指令.

原文链接:https://www.f2er.com/php/139508.html

猜你在找的PHP相关文章