首页 > 系统相关 >phalcon总是跳到index/index问题 nginx try_files配置

phalcon总是跳到index/index问题 nginx try_files配置

时间:2023-08-04 17:44:52浏览次数:58  
标签:files index url uri try php

配置好测试系统后,无论怎么设置网站系统的路由(Router)系统,都不能引起分配器(dispatcher)的调用,总是调用默认的Index Controller和indexAction。

仔细检查了下代码,没问题。然后又拿出老办法 – 追踪源代码。找到对应的源代码分配器部分,看了看,也没啥可疑的错误。问题出在Nginx的配置上,重写规则不小心写错了。

官方文档:https://docs.phalconphp.com/en/latest/reference/nginx.html  提到:

有两个获取url信息的模式:

Using $_GET[‘_url’] as source of URIs

里面的重写规则要写成:

location / { try_files $uri $uri/ /index.php?_url=$uri&$args; }


Using $_SERVER[‘REQUEST_URI’] as source of URIs

重写规则要写成:

 

 location / { try_files $uri $uri/ /index.php; }

如果使用这个模式,需要修改Router的代码:

$router->setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI);

这里面有提到:

https://forum.phalconphp.com/discussion/11385/how-to-get-get-from-uri

 

对try_files指令的解析:

这个指令功能是这样,在收到访问请求的时候,先测试$uri是不是文件,再测试是不是目录,如果是继续访问,如果不是,则调用内部的重定向指令。

/index.php?_url=$uri&$args;

这就是Web framework的统一入口操作,所有的请求都导引到指定的地址。就如同一个app一样的,启动都从规定的地方 – index.php 开始。

_url是这个框架内部使用的变量,必须设置的。&$args是传输后面的参数信息。这样,在后面的配置指令里面,url请求就分解了。

fastcgi_split_path_info ^(.+\.php)(/.+)$;


可以检查一下router.zep文件:

 

其实Phalcon文档里面也提到了,是使用“$_GET[‘_url’] ”进行操作。

其它web框架,使用了其它的变量名,就必须根据要求修改,不能使用”_url”,否则得不到信息。

这里提到了:

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/

“Front Controller Pattern” designs are popular and are used on the many of the most popular PHP software packages; But a lot of examples are more complex than they need to be. For Drupal, Joomla, etc., just use this:

try_files $uri $uri/ /index.php?q=$uri&$args;

Note – the parameter names are different based on the package you’re using. For example:

  • “q” is the parameter used by Drupal, Joomla, WordPress
  • “page” is used by CMS Made Simple

Some software don’t even need the query string and can read from REQUEST_URI. For example, WordPress supports this:

try_files $uri $uri/ /index.php;

If you don’t care about checking for the existence of directories, you can skip it by removing $uri/.

Nginx配置修改好了,系统运行就正常了。

 

 

原文链接:https://acejoy.com/2017/04/12/174/

标签:files,index,url,uri,try,php
From: https://www.cnblogs.com/cheng6018/p/17606612.html

相关文章

  • centos7 Cannot retrieve metalink for repository: epel/x86_64. Please verify its
     备份原始的EPEL存储库配置文件(可选):在更改前,建议您先备份原始的EPEL存储库配置文件,以便在需要时恢复到默认设置。在终端中执行以下命令备份:sudocp/etc/yum.repos.d/epel.repo/etc/yum.repos.d/epel.repo.backup编辑EPEL存储库配置文件:使用文本编辑器(例如nano......
  • DFS 算法模板——二叉树的遍历非递归写法要会,排列组合的一定要自己画一颗树,变量i和当
    dfs算法模板:1、下一层仅2个节点的dfs,也就是二叉树的dfs先序遍历,迭代和递归写法都要熟悉:defpreoder_traversal(root):ifnotroot:returnstack=[root]whilestack:node=stack.pop()dosomethingwithnodeifnode.ri......
  • 使用 OpenTelemetry 监控 Spring Boot
    通过将OpenTelemetry与SpringBoot集成,您可以从应用程序捕获分布式跟踪和其他遥测数据,从而提供有关其在分布式环境中的性能和行为的宝贵见解。什么是开放遥测?OpenTelemetry定义了用于收集遥测数据(例如指标、跟踪和日志)的API和协议,并为流行的编程语言和技术提供了各种库、代理......
  • Adaptive Hash Index 是如何建立的
    AdaptiveHashIndex(以下简称AHI)估计是MySQL的各大特性中,大家都知道名字但最说不清原理的一个特性。本期图解我们为大家解析一下AHI是如何构建的。 首先我们思考一下AHI是为了解决什么问题: 随着MySQL单表数据量增大,(尽管B+树算法极好地控制了树的层数)索引B+树......
  • MySQL字符串截取之substring_index
    substring_index(str,delim,count)str:要处理的字符串delim:分隔符count:计数 例子:str=www.wikibt.comsubstring_index(str,'.',1)结果是:wwwsubstring_index(str,'.',2)结果是:www.wikibt也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容相......
  • CentOS使用yum安装包报错No more mirrors to try解决方法
    报错如下Loadedplugins:fastestmirror,update-motdLoadingmirrorspeedsfromcachedhostfilehttp://mirrors.163.com/centos/7-7.1908.0.el7.centos/os/x86_64/repodata/repomd.xml:[Errno14]HTTPError404-NotFoundTryingothermirror.Toaddressthisissue......
  • tkinter的Entry设置默认值的效果
    用Python的tkinter库做GUI程序,Entry控件被我们用来获取用户的输入,不过很多时候,我们希望GUI界面上的Entry控件能有默认值,用户可以修改默认值,也可以不修改。默认值提高了软件的易用性。直接看代码:importtkinterastkroot=tk.Tk()lb=tk.Label(root,text='网址:')lb.grid......
  • centos7中 configure: error: zlib development files not found
     01、系统[liujiaxin01@PC1~]$cat/etc/redhat-release##centos7.6发行版CentOSLinuxrelease7.6.1810(Core) 002、问题[[email protected]]$./configure##出现如下报错 003、解决方法[root@PC1~]#yum-yinstallzlibzlib......
  • SQLite的SQL语法 CREATE INDEX
    SQLite的SQL语法[目录]CREATEINDEXsql-statement ::=CREATE[UNIQUE]INDEX[IFNOTEXISTS][database-name.]index-nameONtable-name(column-name[,column-name]*)column-name ::=name[COLLATEcollation-name][ASC|DESCCREATEINDEX命令由"CREATEINDEX&qu......
  • ES保存数据时报错:Bulk indexing has failures
    ElasticSearch保存时报错问题解决:错误信息org.springframework.data.elasticsearch.ElasticsearchException:Bulkindexinghasfailures.UseElasticsearchException.getFailedDocuments()fordetailedmessages解决:我这边是因为磁盘空间不足了,ES在分片分配时,默认不......