簡體   English   中英

除非使用帶有index.php的絕對路徑,否則PHP路由無法正常工作

[英]PHP routing not working unless using an absolute path with index.php

使用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文件中需要做些什么嗎?

有關當前項目的細節:

我沒有使用框架,而是GitHub上的Patrick Louys的《無框架》教程: https//github.com/PatrickLouys/no-framework-tutorial

我在Fedora Linux上使用XAMPP作為Web服務器

當Web服務器位於/ opt / lampp中時,我的代碼駐留在我的/ home目錄中……我已經用符號鏈接將它們鏈接: sudo ln -s /home/... /opt/lampp/htdocs (如果那樣的話)事項)...我知道該教程依賴於PHP內置服務器( php -S localhost:8000

也許是錯誤的,但是您必須編寫./helloworld而不是/helloworld

您必須按照以下路徑將代碼(文件)放入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時,您將看到您的項目正在運行!

注意:如果這樣不起作用,請嘗試在htdocs文件夾內的路徑/ opt / lampp / htdocs /下創建一個名為test.php的php文件。 該文件必須在其中:

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

同樣,您必須賦予文件permision(chmod 667)。 然后將其復制並粘貼到瀏覽器導航欄中:

localhost/test.php

您必須在瀏覽器中看到一個大膽的問候世界。

我的快速解決方案:

1-在公共目錄中創建一個.htaccess文件。 所有請求將轉發到index.php

2-添加一個函數來解析提交的整個URL,以檢索正確的URI。 基本上,該函數會像localhost/public/index.php/hello-world一樣修剪整個URL,並返回/hello-world /hello-world是我們的快速路由路由器注冊的路由,當我們的Web服務器接收到這樣的URL時,將調用相應的控制器

來源(說明和代碼示例): http : //blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM