除非使用带index.php的绝对路径,否则PHP路由无法正常工作

时间:2017-12-25 23:34:25

标签: php .htaccess routing fastroute

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

除非我指定路线的整个路径而不仅仅是路线名称,否则PHP网址路由不起作用:

例如,为了为/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

3 个答案:

答案 0 :(得分:0)

可能它错了,但你必须写/helloworld而不是./helloworld

答案 1 :(得分:0)

您必须将代码(文件)放在htdocs文件夹中,并遵循以下路径:

/opt/lampp/htdocs/

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

/opt/lampp/htdocs/hello-world

接下来打开一个终端并像root用户一样访问,将目录更改为hello-world然后你必须给这个文件夹提供permision:

chmod 667 hello-world -R

-R用于为文件夹hello-world及其中的所有文件提供permision。这就是全部!现在,当您尝试localhost / hello-world时,您将看到您的项目正在运行!

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

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

再次,您必须为文件提供permision(chmod 667)。然后将其复制并粘贴到浏览器导航栏中:

localhost/test.php

你必须在浏览器中看到一个大胆风格的大招呼世界。

答案 2 :(得分:0)

我的快速修复:

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

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

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