如何实施;匹配“;从Rails到PHP的路径概念?
特别是,我在应用程序的config/routes.rb文件中有以下内容:如何实施;匹配“;从Rails到PHP的路径概念?,php,ruby-on-rails,Php,Ruby On Rails,特别是,我在应用程序的config/routes.rb文件中有以下内容: match "/:id" => "UrlDB#userreq" 在UrlDBController中: def userreq @request = UrlDB.find_by_url( (params[:id] ) end 我希望能够让相同的userreq方法响应所有传入的请求:id值是什么-我不知道如何在PHP/Apache中实现这一点 -丹尼尔(daniel)PHP给了你关于它的自由。您不必使用“某些
match "/:id" => "UrlDB#userreq"
在UrlDBController中:
def userreq
@request = UrlDB.find_by_url( (params[:id] )
end
我希望能够让相同的userreq方法响应所有传入的请求:id值是什么-我不知道如何在PHP/Apache中实现这一点
-丹尼尔(daniel)PHP给了你关于它的自由。您不必使用“某些路由概念”(如在Rails中),您可以使用“任何路由概念”。您甚至不必使用“控制器”或MVC模型 只需获取传入参数(使用$_请求),并自行决定“路由”
或者-使用任何现有的框架-大多数框架都定义了一些“路由”模板/引擎。首先,Rails是一个Ruby框架,PHP是一种语言。要在PHP中获得相同的功能,必须使用框架,就像使用Ruby一样 或者你可以用手来做: 在不使用任何框架的情况下执行此操作的旧方法是使用Apache重写规则:
RewriteEngine On
RewriteRule /(\d+) userreq.php?id=$1
另一种方法是在PHP中手动完成,仍然需要Apache的帮助
在Apache config/.htaccess中:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
在index.php中:
$path = $_SERVER['REQUEST_URI'];
if (preg_match('#/(\d+)#', $path, $match)) {
// execute userreq controller
} else if (preg_match(...)) {
...
这将因框架而异。PHP本身没有路由的概念——你要么使用框架(哪一个?),要么构建自己的路由ILS是一个用于web应用程序的Ruby框架。在PHP中,您可能还希望使用某种框架,解决方案取决于您选择的框架。谢谢。这就是我需要的答案。我应该说想要转换的全部原因是因为我根本不想使用框架。。。旧学校,破碎和不安全,但它是。。。