using apache's mod_rewrite to parse SEO friendly URL's

后端 未结 2 673
青春惊慌失措
青春惊慌失措 2020-12-19 18:16

How do I convert something like

me.com/profile/24443/quincy-jones

to

me.com/profile.php?id=24443

or something

2条回答
  •  伪装坚强ぢ
    2020-12-19 19:16

    Make sure you have the mod_rewrite apache module enabled, then:

    RewriteEngine on
    
    RewriteRule ^/profile/([^/]*)/([^/]*)$  /profile.php?id=$1 [L]
    
    RewriteRule ^/store/([^/]*)/([^/]*)$    /store.php?id=$1 [L]
    

    You will probably want to handle the reverse condition in PHP, especially with the trailing name part (since that is not in the original URL). If you want to handle it in mod_rewrite without the name, make sure that you do not end up in a double rewrite (depends on the order of your rules). Also, you can use the [L] (last) switch to make the rule the last one used (subsequent rules will be skipped if there is a match).

    Also, it is possible to make a more generic rewrite rule, but you will need to carefully think about other URLs that might be affected.

提交回复
热议问题