Manage URL routes in own php framework

前端 未结 12 2118
盖世英雄少女心
盖世英雄少女心 2021-02-02 16:34

I\'m creating a PHP Framework and I have some doubts...

The framework takes the url in this way: http:/web.com/site/index

It takes the first paramet

相关标签:
12条回答
  • 2021-02-02 16:57

    Even if you are creating your own framework, there is no reason not to reuse robust, well tested and documented components, like this Routing component.

    Just use Composer, which has become the standard for dependency management in PHP, and you'll be fine. Add as many components as you want to your stack.

    And here you have a must read guide on how to make your own framework.

    0 讨论(0)
  • 2021-02-02 16:57

    Are you sure you have your htaccess correctly?

    I guess if you're placing your framework on subfolder, then you have to change your RewriteBase in htaccess file from / to /subfolder/. it would be something like this:

    # on root
    RewriteBase /
    
    #on subfolder
    RewriteBase /subfolder/
    

    that's only thing I could wonder of that in your case ...

    0 讨论(0)
  • 2021-02-02 17:00

    Forget about "reinventing the wheel is wrong" claims. They don't have to use our wheels. I walked on the same road a while ago and i'm totally grateful what i get... i hope you will too

    When it comes to the answer to your specific problem -which if faced too- there is a very easy solution. it's a new line in .htaccess at root folder...

    Just add line below to your root .htaccess file ; (if your subfoler is "subfolder" )

    RewriteRule subfolder/ - [L]
    

    This will leave apart this folder from rewriting directives

    By using this way you can install as many instances of your framework as you wish. But if you want this to be framework driven then you have to create/change .htaccess within your framework.

    0 讨论(0)
  • 2021-02-02 17:00

    Create /myBaseDirectory/public directory and put your files there - like index.php.
    This works because Apache sees this directory like base directory.

    0 讨论(0)
  • 2021-02-02 17:07

    basically grab the url string after your first slash, and then explode it into an array (i use '/' as a delimiter).

    then carefully array_shift off your elements and store them as variables

    item 0: controller
    item 1: the action / method in that controller
    item 2 thru n: the remaining array is your params
    
    0 讨论(0)
  • 2021-02-02 17:09

    At some point you will have to check the $_SERVER ['HTTP_HOST'] and a config var defined by the programmer/user wich indicates the subfolder(s) where the app is located, and remove the portion you are not interested in from the rest of the URL.

    You can check this forum post on the codeigniter formus for some hints.

    CodeIgniter uses another different way to route the controller/method internally. You do the routing by the $_SERVER['PATH_INFO'] value. You use the urls like this: myapp.com/index.php/controller/method .

    To avoid showing index.php on the uri you must rely on an Apache rewrite rule, but even with that I think that the CI one is a nice solution, once you have your index file location, you can avoid all the hassle of parsing the URL.

    0 讨论(0)
提交回复
热议问题