如何在PHP中实现URL路由

时间:2009-08-22 14:01:06

标签: php frameworks standards url-routing

如何在PHP中实现URL路由。

2 个答案:

答案 0 :(得分:16)

如果您使用Apache,则可以通过mod_rewrite进行URL路由。

小例子:

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

那将有任何请求,如

http://yoursite.com/dir1/path1 

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

更多示例here

另一种选择是将每个请求重定向到单个php文件

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

然后在代码中执行此操作,您可以使用similar approach,通过一组正则表达式与某些代码匹配,然后通过header()或仅在内部重定向。

答案 1 :(得分:11)

首先,您需要启用Apache的(我认为您的网络服务器是Apache) mod_rewrite


然后,您需要创建一个RewriteRule以将所有内容重定向到index.php页面。 这样的事情可以做到:

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

它会将每个请求重定向到index.php不存在的文件;这意味着,如果请求的URL是www.example.com/blah,它实际上是将被调用的index.php。

关于这一点,这里有一些可以提供帮助的链接:


然后,此页面必须确定必须显示的内容,具体取决于调用的初始URL或接收的参数。

这可以使用Design Pattern Front Controller来完成 - 例如,它在大多数现代PHP框架中实现。


SO上有很多关于这个问题的问题;其中一些(及其答案)可能对您有所帮助。例如: