V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
echo404
V2EX  ›  PHP

thinkphp5.1 如何支持以. PHP 为后缀的 url 的访问

  •  
  •   echo404 · 2019-04-13 18:32:11 +08:00 · 3778 次点击
    这是一个创建于 2076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为了支持某些老设备的访问,我们的请求地址需要带上.php 后缀。我写了这样的路由:
    Route::rule('o2o-dm/uplog', 'o2o_api/o2o_dm/uplog',"*")->ext('php');
    但是访问: http://tp.com/o2o-dm/uplog.php 时直接报 File not found.想请教一下各位有遇到这样的问题么?该如何解决呢?
    百度,goohle 一圈,也没看到有效的方法。不知道是问题太简单了,还是搜的方法不对

    第 1 条附言  ·  2019-04-13 21:26:19 +08:00
    我自己又研究了一下,发现.php 后缀无法生效的根本原因是 nginx 重写规则这块的问题
    server{
    location / {
    root /data/www/tp/public/;
    if (!-e $request_filename){
    rewrite ^/(.*)$ /index.php?s=/$1 last;
    }
    }

    location ~ \.php$ {
    root /data/www/tp/public/;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    如果是带.php 后缀的 url,会直接进入下面的 location 导致上面的重写没有起到效果,我这边的做法是直接在下面的 location 中在加一个 rewrite ^/(.*)$ /index.php?s=/$1 last;有没有擅长 nginx 的大手子说说这样做会不会有什么隐患
    6 条回复    2019-04-15 10:27:08 +08:00
    Windelight
        1
    Windelight  
       2019-04-13 20:48:29 +08:00 via Android
    如果程序端做不到,那就在服务端写 Rewrite 吧
    yunye
        2
    yunye  
       2019-04-13 20:51:19 +08:00 via Android
    配置里改后缀名 默认是 html
    pynix
        3
    pynix  
       2019-04-13 22:58:43 +08:00
    什么设备还有这限制?
    ysc3839
        4
    ysc3839  
       2019-04-13 23:05:02 +08:00 via Android
    配置文件里 if 和 rewrite 应该用 try_files 代替,然后把下面的 location 改成 index.php 。
    treblex
        5
    treblex  
       2019-04-14 01:25:48 +08:00 via Android
    模板配置文件里应该
    echo404
        6
    echo404  
    OP
       2019-04-15 10:27:08 +08:00
    @ysc3839 试了一下,这么写的话会无限重定向
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:11 · PVG 16:11 · LAX 00:11 · JFK 03:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.