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指令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |