How to Implement URL Routing in PHP

一曲冷凌霜 提交于 2019-11-28 20:55:43
Vinko Vrsalovic

If you use Apache you can do the URL routing via mod_rewrite.

Small example:

RewriteEngine On
RewriteRule ^(dir1)/?(path2)? main.php?dir=$1&path=$2

That'll have any request like

http://yoursite.com/dir1/path1 

served by

http://yoursite.com/main.php?dir=dir1&path=path2

More examples here.

The other alternative have every request redirect to a single php file

RewriteEngine On
RewriteRule (.*) main.php?request=$1

and then to do it in code, where you can use a similar approach, by having a set of regular expressions that are matched by some code and then redirected via header() or just internally.

Pascal MARTIN

First of all, you will need Apache's (I suppose your webserver is Apache) mod_rewrite to be enabled.


Then, you need to create a RewriteRule to redirect everything to your index.php page.
Something like this could do :

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php 

It will redirect every request to a file that doesn't exist to index.php ; this means that, if the requested URL is www.example.com/blah, it is actually index.php that will be called.

About that, here a couple of link that can help :


Then, this page has to determine what has to be displayed, depending on what initial URL was called -- or what parameters are received.

This can be done using the Design Pattern Front Controller, for instance -- it's implemented in most modern PHP Frameworks, for instance.


There have been many questions of this subject on SO ; some of those (and their answers) might probably help you. For instance :

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!