Vin*_*vic 16

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

小例子:

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

那会有任何要求

http://yoursite.com/dir1/path1 
Run Code Online (Sandbox Code Playgroud)

服务

http://yoursite.com/main.php?dir=dir1&path=path2
Run Code Online (Sandbox Code Playgroud)

这里有更多例子.

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

RewriteEngine On
RewriteRule (.*) main.php?request=$1
Run Code Online (Sandbox Code Playgroud)

然后在代码中执行它,您可以使用类似的方法,通过一组正则表达式与一些代码匹配,然后通过header()或内部重定向.


Pas*_*TIN 11

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


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

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php 
Run Code Online (Sandbox Code Playgroud)

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

关于这一点,这里有几个可以帮助的链接:


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

例如,这可以使用设计模式前端控制器来完成- 例如,它在大多数现代PHP框架中实现.


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