搜尋

首頁  >  問答  >  主體

php - 有關路由的實現

使用網站網站軟體時,發現有的軟體的根目錄下的index.php可以產生多個不同的網頁,如:

localhost/index.php/blog;localhost/index.php/contact。

請問這種路由方式是如何實現的?謝謝!

仅有的幸福仅有的幸福2737 天前931

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-06-26 10:51:00

    對於localhost/index.php,存取的檔案位址是 localhost/index.php 沒錯,然後 /blog,可以理解成參數,

    至於怎麼獲取呢 ?查看 $_SERVER 的資訊吧。

    比如說,'/blog' 參數對應的是 Blog 控制器的 index 方法,然後可以透過呼叫 (new Blog())->index() 來實現對應的邏輯。

    在往下說,'/blog/add' 參數,對應 Blog 控制器的 add 方法,然後可以透過呼叫 (new Blog())->index() 實現對應的邏輯。

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:51:00

    對於伺服器來說,www.xxx.com/index.php/test只能辨識到www.xxx.com/index.php,這個是在Nginx或Apche裡面配置的,例如下面一段設定:

    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
            fastcgi_intercept_errors off;
            fastcgi_buffer_size 16k;
            fastcgi_buffers 4 16k;
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
        }
    

    至於後面的信息test,是PHP代碼自己去識別的,其實就是一個參數,(至於PHP代碼怎麼接收到這個參數,你就得去看看Nginx或者Apache是​​怎麼和PHP交互的了),當這個參數"test"拿到以後,就可以根據這個參數做你想做的事,不同的參數,你就可以做不同的事,提供多樣的功能,這也是我對路由的理解。

    回覆
    0
  • 滿天的星座

    滿天的星座2017-06-26 10:51:00

    後面的參數格式叫做 PATH_INFO, apache預設提示, nginx要自己正規比對一下.

    這個就跟index.php?url=/path/to/xxx 一樣. 只是用一個參數來表示項目的路由的.

    回覆
    0
  • 取消回覆