【问题标题】:How can I assign a handler to handle ANY URLS?如何分配处理程序来处理任何 URL?
【发布时间】:2009-09-27 06:58:57
【问题描述】:

我正在做一个具有 REST 架构的网站,但我发现后者很难做到。 我希望能够处理这样的 HTTP 请求:

GET /myapp/5445/HTTP/1.1 ...

在理想情况下,我会编写自己的服务器并自己处理所有 HTTP 请求,但我实际上想使用 CGI 或 PHP 来完成这个项目,并且我希望能够将这些 HTTP 请求映射到一个程序,该程序将决定不管它是否是一个有效的请求。

对于 REST 架构,GET /myapp/5445/ 可能意味着“给我资源 #5445。 PUT /myapp/5445/ 可能意味着“创建资源 #5445”。

这个 URL 问题是阻止我发布杀手级应用的唯一原因!! :) 也许不是,但谢谢你

我目前正在使用 lighttpd 和 CGI​​。如果我有 Apache 解决方案,我会很乐意切换。

顺便说一句,这个网站似乎有办法处理这些不存在的 URL,而无需调用错误 404 处理程序 http://pastebay.com/57208

【问题讨论】:

    标签: apache url rest lighttpd


    【解决方案1】:

    使用 apache,您可以设置一个 .htaccess 文件以将所有请求转发到单个控制器脚本:

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ controller.php [QSA,L]
    

    在 controller.php 中,你可以对 URL 做任何你想做的事情。

    【讨论】:

    • 感谢您的回答,我正在尝试,我会尽快回复您。
    • 我在 Apache 上恢复了我的设置。我创建了 htaccess 文件并将您的代码复制粘贴到其中。不过,我现在得到了一个配置。内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。
    • 它不起作用,我的响应“hello”的controller.php永远不会被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多