.htaccess使用随机参数重写URL

时间:2018-04-09 19:06:58

标签: php regex apache .htaccess url-routing

我正在编写一个PHP应用程序,即将创建各种控制器。目前我有一个控制器使用某种方法,因此URL如下所示:

http://somewebsite.com/index.php?c=controller&a=action

它被重写为:

http://somewebsite.com/controller/action

使用此.htaccess文件:

RewriteEngine On
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?c=$1&a=$2 [NC]

我想要实现的是能够使用多个控制器重写URL(越多越好),可能是随机顺序。有没有比重写每个可能的URL参数组合更方便的方法?

2 个答案:

答案 0 :(得分:3)

许多框架(Codeigniter,WordPress,Laravel等)使用类似于以下内容的.htaccess文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

这将重写由index.php文件处理的所有传入URL。然后,您可以使用$_SERVER['REQUEST_URI']变量来获取确切的请求URI,解析它,然后按您的需要处理它。

答案 1 :(得分:0)

如果您要使用任意路由方案,可能最好的方法是只传递整个网址字符串,例如^(。+)$ to index.php并让你的php应用程序根据'/'拆分字符串并处理数组但是对你的应用程序有意义