【问题标题】:Railo Tomcat 404 redirects and CGI varsRailo Tomcat 404 重定向和 CGI​​ 变量
【发布时间】:2011-03-25 21:50:50
【问题描述】:

我在 Ubuntu - Railo - Tomcat(无 Apache)上遇到了 404 重定向问题。

我有站点的 /WEB-INF/web.xml 将 404 错误重定向到自定义 404.cfm,它尝试读取某些 CGI 变量并对其进行操作。问题是我没有得到所有的 CGI 变量,大多数都是空的。 QUERY_STRING 是从缺少的模板传递的唯一变量。其余的要么为空,要么为 404.cfm。

我要的是缺失模板的模板路径和查询字符串。

以下是我尝试过的一些 cfdump:

<cfdump var="#cgi#">
<cfdump var="#getPageContext().getRequest()#"><!--- returns HTTPServletRequestWrap class, fields, methods --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest()#"><!--- returns ApplicationHttpRequest class, fields, methods --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getAttributeNames()#"><!--- returns apparently useable strings --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getAttribute("query_string")#"><!--- returns Empty:null --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getParameterNames()#"><!--- returns "id" --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getHeaderNames()#"><!--- returns apparently useable strings --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getQueryString()#"><!--- returns original template's query string Yay! --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getRequestURL()#"><!--- returns URL for 404.cfm --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getAttribute("Referer")#"><!--- returns Empty:null --->
<cfdump var="#getPageContext().getRequest().getOriginalRequest().getAttribute("Redirect_URL")#"><!--- returns Empty:null --->

任何想法都将不胜感激。请记住,Tomcat 是没有 Apache 的 Web 服务器。

【问题讨论】:

    标签: tomcat cgi http-status-code-404 railo


    【解决方案1】:

    您可能应该做的是不要使用 Tomcat 进行 404 重定向。你是对的,我无法获得最初请求的路径。这很可能是设计使然。

    而是将 Railo 服务器管理员中的 404 处理程序设置为您的 CFM 文件。然后您将看到实际请求的页面。干杯!

    【讨论】:

    • 我想知道我的 tukey urlrewrite 过滤器是否绕过错误并将所有内容都交给 index.cfm。这有意义吗?我已将自定义 404.cfm 添加到 Railo Web Admin,并将错误页面注释掉我的 web.xml。
    • 是的,亚当的建议奏效了! 1. 对自定义 404 使用 Railo 管理员 2. 将自定义 404 模板移动到其自己的目录 3. 调整 tukey urlrewrite.xml 以允许该错误目录 现在任何不存在的对根级别的 .CFM 请求都会重定向到 index.cfm(Mura 站点)。我希望它转到自定义 404 页面。现在的问题是: 1. 在 urlrewrite 过滤器中使用 reg ex 解决这个问题的最佳方法是什么? 2. 如果是这样,reg ex 是什么?我想允许除 index.cfm 之外的所有根级别页面 (*.cfm + *.html) 通过,因此它们属于 404。 3. 这个逻辑是否正确?如果不是,reg ex 应该去哪里?
    猜你喜欢
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多