我正在编写一个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参数组合更方便的方法?
答案 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应用程序根据'/'拆分字符串并处理数组但是对你的应用程序有意义