How was a URL like http://stackoverflow.com/posts/1807421/edit created in PHP?

后端 未结 8 904
暖寄归人
暖寄归人 2021-01-23 06:10

When you edit a question on stackoverflow.com, you will be redirected to a URL like this:

https://stackoverflow.com/posts/1807421/edit

相关标签:
8条回答
  • 2021-01-23 06:53

    As @mr-euro stated you can use mod_rewrite but front controller is a far better solution. You force every request to index.php and you write your application controlling in index.php.

    0 讨论(0)
  • 2021-01-23 06:56

    I am poor at this but i do know you can redirect urls using apache mod_rewrite and by touching config files. From what i remember htaccess can be used to redirect. Then internally when the user hits http://stackoverflow.com/posts/1807421/edit it can use your page http://stackoverflow.com/edit.php?p=1807421 instead or whatever you want.

    0 讨论(0)
  • 2021-01-23 06:59

    You could use htaccess + write an URI parser class.

    0 讨论(0)
  • 2021-01-23 07:06

    It's called routing. Take a look at tutorials on the subject.

    If you use a framework such as cake php it should be built in.

    0 讨论(0)
  • 2021-01-23 07:06

    You use Apache's .htaccess/mod_rewrite, and optionally a PHP file, which is the approach I like to take myself.

    For the .htaccess, something like this:

    RewriteEngine On
    RewriteRule ^(.*)$ index.php
    

    Then in your PHP file, you can do something like this:

    The following should get everything after the first slash.

    $url = $_SERVER['REQUEST_URI'];
    

    You can then use explode to turn it into an array.

    $split = explode('/', $url);
    

    Now you can use the array to determine what to load:

    if ($split[1] == 'home')
    {
    // display homepage
    }
    

    The array is starting from 1 since 0 will usually be empty.

    0 讨论(0)
  • 2021-01-23 07:08

    It's indeed done by mod_rewrite, or with multiviews. But i prefer mod_rewrite.

    First: you create a .htaccessfile with these contents:

    RewriteEngine On
    RewriteRule ^posts/([0-9])/(edit|delete)$ /index.php?page=posts&postId=$1&action=$2
    

    Obvious, mod_rewrite must be enabled by your hostingprovider ;)

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