.htaccess 如何在没有重写引擎的情况下使用FatfreePHP框架

.htaccess 如何在没有重写引擎的情况下使用FatfreePHP框架,.htaccess,fat-free-framework,.htaccess,Fat Free Framework,我无法在我的项目中使用htaccess,因此干净的URL不适用于路由。有没有办法改用查询参数 示例 myf3project.net/user/show不可能。相反,我想做这样的事情: myf3project.net?path=user/show或 myf3project.net?视图=用户&操作=显示 这仍然是有可能的,不幸的是,你必须自己建造大部分 非常基本的例子: <?php $f3 = require 'lib/base.php'; $f3->route('GET /',

我无法在我的项目中使用htaccess,因此干净的URL不适用于路由。有没有办法改用查询参数

示例

myf3project.net/user/show
不可能。相反,我想做这样的事情:

  • myf3project.net?path=user/show
  • myf3project.net?视图=用户&操作=显示

这仍然是有可能的,不幸的是,你必须自己建造大部分

非常基本的例子:

<?php

$f3 = require 'lib/base.php';

$f3->route('GET /', function() use($f3) {
    switch($f3->get('view')) {
        case 'user':
            // do something
            break;
        case 'admin':
            // do something
            break;
    }
});

这还是有点可能的,不幸的是你必须自己构建大部分

非常基本的例子:

<?php

$f3 = require 'lib/base.php';

$f3->route('GET /', function() use($f3) {
    switch($f3->get('view')) {
        case 'user':
            // do something
            break;
        case 'admin':
            // do something
            break;
    }
});

您的意思是
mod_rewrite
不可用吗?这确实是个问题。然而,你可以呼叫救援

下面是一个简单的例子:

$f3=require('lib/base.php');
//主页
$f3->route('GET/',函数($f3){
回声“这是家。”。
'单击以查看联系人表单';
});
//联系方式
$f3->route('GET | POST/contact',函数($f3){
echo“这是联系方式。”。
“单击可回家。”。
''.
''.
“发送消息”;
如果($f3->动词=='POST')
回显“已提交邮件:
”。 nl2br($f3->get('POST.message')); }); //这里的解决方法是:使用$f3->mock代替$f3->run $path=$f3->get('get.path'); 如果(@$path[0]!=='/')) $path='/'; $f3->mock($f3->VERB.'.$path,$\u POST);
您的意思是
mod\u rewrite
不可用吗?这确实是个问题。然而,你可以呼叫救援

下面是一个简单的例子:

$f3=require('lib/base.php');
//主页
$f3->route('GET/',函数($f3){
回声“这是家。”。
'单击以查看联系人表单';
});
//联系方式
$f3->route('GET | POST/contact',函数($f3){
echo“这是联系方式。”。
“单击可回家。”。
''.
''.
“发送消息”;
如果($f3->动词=='POST')
回显“已提交邮件:
”。 nl2br($f3->get('POST.message')); }); //这里的解决方法是:使用$f3->mock代替$f3->run $path=$f3->get('get.path'); 如果(@$path[0]!=='/')) $path='/'; $f3->mock($f3->VERB.'.$path,$\u POST);
为此,您还可以覆盖
$\u服务器['REQUEST\u URI']

$f3->route('GET /user', function ($f3) { echo "user"; });
$f3->route('GET /user/@action',function($f3,$params){ 
  echo "user->".$params['action']; 
});

if ($f3->exists('GET.path',$path))
    $f3->URI = $f3->BASE.'/'.$path;

$f3->run();
然后就打开
http://myf3project.net?path=user/show

为此,您还可以覆盖
$\u服务器['REQUEST\u URI']

$f3->route('GET /user', function ($f3) { echo "user"; });
$f3->route('GET /user/@action',function($f3,$params){ 
  echo "user->".$params['action']; 
});

if ($f3->exists('GET.path',$path))
    $f3->URI = $f3->BASE.'/'.$path;

$f3->run();
然后就打开
http://myf3project.net?path=user/show

基于,我提出了一个解决方案,允许您拥有如下路径:

/index.php/foo/bar

而不是:

/index.php?路径=/foo/bar

但您仍然可以使用查询变量(如
/index.php/foo/bar?test=123
),并使用
$\u get['test']
$f3->get('get.test')

只需替换您的
$f3->run()带有:

$path=$_SERVER['PATH_INFO'];
if (@$path[0]!=='/')
    $path='/';
$f3->mock($f3->VERB.' '.$path.'?'.$_SERVER['QUERY_STRING'],$_POST);
基于,我提出了一个解决方案,允许您拥有如下路径:

/index.php/foo/bar

而不是:

/index.php?路径=/foo/bar

但您仍然可以使用查询变量(如
/index.php/foo/bar?test=123
),并使用
$\u get['test']
$f3->get('get.test')

只需替换您的
$f3->run()带有:

$path=$_SERVER['PATH_INFO'];
if (@$path[0]!=='/')
    $path='/';
$f3->mock($f3->VERB.' '.$path.'?'.$_SERVER['QUERY_STRING'],$_POST);

谢谢!这就是我一直在寻找的解决方案!谢谢!这就是我一直在寻找的解决方案!嗨,萨沙,我把
$f3->get('view')
改为
$f3->get('get.view')
。现在它起作用了。谢谢!你说得对,忘了把它添加到我的代码片段中。嗨,萨沙,我把
$f3->get('view')
改为
$f3->get('get.view')
。现在它起作用了。谢谢!你说得对,忘了把它添加到我的代码片段中。