0

使用 nikic/fast-route PHP 包进行 url 路由:

PHP url 路由不起作用,除非我指定路由的整个路径,而不仅仅是路由的名称:

例如,为了创建一个路由/hello-world,我必须指定整个路径:localhost/myProject/public/index.php/hello-world

$r->addRoute('GET', '/localhost/myProject/public/index.php/hello-world', function () {
        echo 'Hello World';
    });

.htaccess 文件中有什么需要做的吗?

关于当前项目的细节:

我没有使用框架,而是 Patrick Louys 在 GitHub 上的无框架教程:https ://github.com/PatrickLouys/no-framework-tutorial

我在 Fedora Linux 上使用 XAMPP 作为 Web 服务器

我的代码位于我的 /home 目录中,而 Web 服务器位于 /opt/lampp 中……我已经用符号链接将它们链接起来:(sudo ln -s /home/... /opt/lampp/htdocs如果重要的话)……我知道本教程依赖于 PHP 内置服务器 ( php -S localhost:8000)

4

3 回答 3

1

我的快速修复:

1-在公共目录中创建一个.htaccess文件。所有请求将被转发到index.php

2- 添加一个函数来解析提交的整个 URL,以便检索正确的 URI。基本上,该函数会修剪整个 urllocalhost/public/index.php/hello-world并返回/hello-world. /hello-world作为我们的快速路由路由器注册的路由,当我们的网络服务器接收到这样的 url 时,将调用相应的控制器

来源(解释和代码示例):http: //blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/

于 2018-01-02T00:39:26.353 回答
0

您必须将代码(文件)放在此路径后面的 htdocs 文件夹中:

/opt/lampp/htdocs/

然后创建名为 hello-world 的文件夹,此文件夹必须以这种方式位于 htdocs 文件夹中:

/opt/lampp/htdocs/hello-world

接下来打开一个终端并像root用户一样访问,将目录更改为hello-world,然后您必须像这样授予该文件夹的权限:

chmod 667 hello-world -R

-R 用于授予文件夹 hello-world 和其中所有文件的权限。就这样!现在,当您尝试 localhost/hello-world 时,您将看到您的项目正在运行!

注意:如果这不起作用,请尝试在路径 /opt/lampp/htdocs/ 之后的 htdocs 文件夹中创建一个名为 test.php 的 php 文件。该文件必须包含以下内容:

<h1><b><?php echo "hello wordl!"; ?></b></h1>

同样,您必须授予文件权限(chmod 667)。然后将其复制并粘贴到浏览器导航栏中:

localhost/test.php

您必须在浏览器中看到一个粗体字的大hello world。

于 2017-12-26T02:33:20.897 回答
0

也许它是错误的,但/helloworld你必须写而不是./helloworld

于 2017-12-25T23:47:07.133 回答