加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 14:00:30 所属栏目:PHP教程 来源:网络整理
导读:我有一个 PHP脚本来处理脚本路由并做各种奇特的事情.它最初是为Apache设计的,但我正在尝试将它迁移到nginx以用于我的一些盒子.现在,我正试图在测试服务器上解决问题. 因此,脚本的工作方式是使用.htaccess文件拦截目录(在Apache中)的所有HTTP流量.这是看起来
我有一个 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指令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读