代码之家  ›  专栏  ›  技术社区  ›  Lirik

您如何看待ColdFusion中的客户端URL?

  •  2
  • Lirik  · 技术社区  · 17 年前

    比如说,在ColdFusion网站上,用户已经导航到 http://www.example.com/sub1/

    服务器端代码通常用于告诉您用户的URL是什么,如下所示: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#

    但是,“cgi.script_name”会自动包含该文件夹的默认cfm文件-例如,当解析和展开时,代码将显示给我们。” http://www.example.com/sub1/index.cfm

    因此,无论用户访问sub1/index.cfm还是sub1/,cgi.script_name“var都将包含该”index.cfm“。

    问题是,如何确定用户实际访问的URL?这个问题主要是为了搜索引擎优化的目的-它通常比301重定向“/index.cfm”到“/”更好,以确保任何内容都只有一个URL-因为这主要是为了蜘蛛的利益,在这种情况下,javascript不是一个合适的解决方案。另外,假设一个人不能访问isapi-rewrite或mod-rewrite——问题是如何在coldfusion中实现这一点,具体来说。

    5 回复  |  直到 14 年前
        1
  •  6
  •   Tomalak    17 年前

    我想这是不可能的。

    如果客户机请求“get/”,那么在调用ColdFusion之前,Web服务器会将其转换为“get/无论默认文件是什么。(这是Web服务器必须知道必须首先调用ColdFusion的必要条件!)

    从ColdFusion(或任何应用服务器)的角度来看,客户机请求“get/index.cfm”,这就是您在中看到的 #CGI# .

    正如您自己所指出的,使用URL重写工具可以区分。既然你特别排除了这条路,我只能说你在这里运气不好。

        2
  •  3
  •   Sergey Galashyn    17 年前

    不确定是否可以只使用CF,但您可以使用Web服务器的URL重写来实现这一技巧。-- 当然,如果你在使用它们 .

    对于Apache,它可以这样看。假设,我们使用的是以下mod ou重写规则:

    重写^page/([0-9]+)/?$ 指数?page=$1&noindex=是[L]

    现在,当我们尝试访问URL时 http://website.com/page/10/ CGI显示:

    查询字符串page=10&noindex=yes

    看到这个想法了吗?当使用IIS时,请认为同样的事情是可能的。

    希望这有帮助。

        3
  •  2
  •   Ben Doom    17 年前

    我认为这在CF中是不可能的。根据我的理解,Web服务器(Apache、IIS等)确定要显示的默认页面,并从CF请求它。因此,CF不知道实际调用的页面是什么。

    Sergii是正确的,您可以使用URL重新分区来执行此操作。如果您不能使用,您可以使用这样一个事实:在默认页面列表中,特定页面具有优先权。

    假设default.htm是默认页列表中的第一页。编写一个自动转发到index.cfm(或其他)的通用default.htm。如果可以调整默认值列表,可以让CF执行301重定向。如果没有,可以在HTML文件中执行元刷新、JS重定向或其他操作。

        4
  •  1
  •   DanSingerman    17 年前

    我认为这是可能的。

    使用 GetHttpRequestData 您将可以访问所有HTTP头。

    然后 GET 其中的标题应该告诉您浏览器正在请求什么文件。

    尝试

    <cfdump var="#GetHttpRequestData()#"> 
    

    看看你能用什么。

    注意-我没有ColdFusion来验证这一点。

    编辑 :做了更多的研究之后,似乎 获取httpRequestData 不包括 得到 标题。所以这个方法可能行不通。

    不过,我相信有一种方法-尝试卸载CGI范围,看看你有什么。

        5
  •  0
  •   ColdFusion developer    16 年前

    如果您能够安装isapi-rewrite(假设您在IIS上),则- http://www.helicontech.com/isapi_rewrite/

    它将在gethttpRequestData()结果结构中插入一个变量x-rewrite-url,根据访问的URL,该结构将具有/或/index.cfm。

    马丁

    推荐文章