1

我有点像 apache 新手——让我们先把它排除在外!我正在尝试在我的 railo 实例上设置“taffy”,一个 REST API 框架,但我终生无法让这种重写工作。我用 Coldfusion / IIS 7 设置得很好,但我无法在 apache 中复制结果。

基本上,该框架依赖于获取这样的请求:

/api/index.cfm?endpoint=/resource

这很好,但它显然不是 RESTful。他们在“taffy”文档中说,如果没有任何额外的规则,您应该能够简单地调用“/api/index.cfm/resource”,但我从来没有做过这项工作。无论如何,我希望您能够在 URL 栏中键入“/api/resource”,并且无需将 URL 更改回丑陋的“/api/index.cfm?endpoint=/resource”即可正常工作。

这是我的重写规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule api/(.*)$ /api/index.cfm?endpoint=/$1 [QSA,L]

查看日志,这使 URL 正确地重写为“/api/index.cfm?endpoint=/resource”。然后,它断开“?endpoint=/resource”,决定它不喜欢它,并简单地重定向到“/api/index.cfm”......什么都不做。

现在,据我了解,apache 正在获取查询字符串并将其隐藏在 cgi QUERY_STRING 变量中。Railo 需要将“端点”变量移出 URL 范围,而不是 CGI 范围。

有什么办法可以完成我在这里尝试做的事情吗?顺便说一句,如果我按照我看到的建议添加 R 或 R=301 标签,我只会陷入无限重定向循环,我也无法解释。在这一点上,我几乎会对一个普通的旧重定向感到满意,但我无法摆脱循环。我在做什么!!?

4

0 回答 0