如何实现从Rails到PHP的“匹配”路径概念?

时间:2011-08-21 18:17:37

标签: php ruby-on-rails

特别是我在app的config / routes.rb文件中有以下内容:

match "/:id" => "UrlDB#userreq"

在UrlDBController中是:

def userreq
    @request = UrlDB.find_by_url( (params[:id] )
end

我希望能够使用相同的userreq方法响应所有传入的请求关于:id值是什么 - 我不知道如何在PHP / Apache中实现它。

-daniel

2 个答案:

答案 0 :(得分:0)

PHP为您提供自由。你没有被迫使用“一些路由概念”(比如在Rails中),你可以使用“任何路由概念”。您甚至不会被迫使用“控制器”或MVC模型。

只需获取传入参数(使用$ _REQUEST),然后自行决定“路由”。

或 - 使用任何现有框架 - 其中大多数都定义了一些“路由”模板/引擎。

答案 1 :(得分:0)

首先,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(...)) {
...