特别是我在app的config / routes.rb文件中有以下内容:
match "/:id" => "UrlDB#userreq"
在UrlDBController中是:
def userreq
@request = UrlDB.find_by_url( (params[:id] )
end
我希望能够使用相同的userreq方法响应所有传入的请求关于:id值是什么 - 我不知道如何在PHP / Apache中实现它。
-daniel
答案 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(...)) {
...