OpenShift上的Node.js:Apache为具有百分比编码' /'的URL返回404人物

时间:2014-03-24 23:56:24

标签: node.js apache express openshift

我有一个在OpenShift上运行的非常简单的Node.js博客系统。当它读取博客条目的元数据时,它会在通过encodeURIComponent后保存标题。然后将该百分比编码的字符串用作URL中的后“密钥”。

例如:

  • 我写了一篇名为“post / with / slashes”
  • 的博客文章
  • 我的博客系统从元数据中读取标题,并保存博客文章udner“post%2Fwith%2Fslahes”
  • 我的爱读者可以通过他们的网络浏览器访问my-blog.io/post/post%2Fwith%2Fslahes

我正在使用Express,首先我注意到Express在传递给我的应用程序之前解码了URL字符串(也就是说,我的代码在请求参数中找到字符串"post/with/slashes")。所以我在查找帖子之前再次通过encodeURIComponent传递它。我不认为这是相关的,但我已经提到它以防万一。

我的问题:当我运行本地实例(这是“独立的”Node.js,没有Apache继续)时,这很好用。 Express传递给我"post/with/slashes",我将该字符串传递给encodeURIComponent,然后我查看帖子。但是当我部署到OpenShift时,请求根本无法到达我的应用程序。我服务于OpenShift的默认404页面,其中显示“在此服务器上找不到请求的URL /帖子/帖子/带/ slashes。”

总结:在将传递给Node.js之前,Apache似乎正在解码百分比编码的网址。由于URL中现在有斜杠,因此Express不知道如何将请求路由到我的应用程序。这是预期的(如果是这样的话)?如果没有,为什么会发生这种情况,我该怎么办呢?

0 个答案:

没有答案