1

我正在使用框架一 (FW/1)、Coldfusion 10 并尝试使用 Tuckey URLRewriteFilter 从 URL 中删除 index.cfm。我在 FW/1 设置中将 generateSES 设置为 true 并将 SESOmitIndex 设置为 true

我的 urlrewrite.xml 文件中有以下代码

<rule>
    <from>^/(.*)$</from>
    <to last="true">/index.cfm/$1</to>
</rule>

当我查看应用程序时,我收到 404 错误,因此我将 CGI 范围转储到我的 onMissingTemplate() 方法中,我看到以下键引起了我的注意。

PATH_INFO m/
PATH_TRANSLATED C:\Coldfusion10\cfusion\wwwroot\index.cf
CF_TEMPLATE_PATH  C:\Coldfusion10\cfusion\wwwroot\index.cf
SCRIPT_NAME //index.cf

似乎它正在扼杀请求/上下文等。我在这里看到了一些关于 SO 的其他帖子,但没有任何答案。

我在本地 Windows Vista 机器上使用 ColdFusion 10,本地内置网络服务器。

谁能阐明我做错了什么或为什么会发生这种情况?我正在使用 URLRewriteFilter 4.0.3 版 http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html

4

1 回答 1

1

> “我在 FW/1 设置中将 generateSES 设置为 true,将 SESOmitIndex 设置为 true”

这两个设置无关紧要——它们只影响 buildUrl 方法的行为。
(尽管知道 path_info 的存在将为该请求切换“generateSES”标志可能很有用,即使您在 FW 设置中明确禁用它也是如此。)


如果您使用的是 URL 过滤器,则无需担心通过 path_info 并且仅重写为 query_string 可能更简单 - 同样,无论上述设置如何,都使用/处理两者。

作为第一步,只需尝试一下,看看你会得到什么:

<rule>
    <from>^/(?!index\.cfm|favicon\.ico|list|of|folders)(.*)</from>
    <to last="true">/index.cfm?action=$1</to>
</rule>

您可能会注意到那里的负面前瞻性(?!.. )- 它可以防止实际文件和目录被错误地重定向 - 如果您有任何其他根级文件添加它们,以及包含您的图像的任何顶级文件夹/样式表/等,|用作分隔符。

于 2012-08-27T13:35:43.927 回答