是否有一种评估URL变量以确定适当页面的最佳方法?

是否有一种评估URL变量以确定适当页面的最佳方法?,url,coldfusion,Url,Coldfusion,我正在使用ColdFusion 9.0.1 我有一个新网站,它使用Bikes.cfm和Makers.cfm作为模板页面。我需要能够将BikeID和MakerID以及其他变量传递到这两个页面。我不想在URL中使用实际的页面名称,例如: MyDomain.com/Bikes.cfm?BikeID=1234&MakerID=1234 我希望我的URL看起来更像这样: MyDomain.com/?BikeID=1234&MakerID=1234 我不需要在URL中指定页面名称 我希望

我正在使用ColdFusion 9.0.1

我有一个新网站,它使用Bikes.cfm和Makers.cfm作为模板页面。我需要能够将BikeID和MakerID以及其他变量传递到这两个页面。我不想在URL中使用实际的页面名称,例如:

MyDomain.com/Bikes.cfm?BikeID=1234&MakerID=1234
我希望我的URL看起来更像这样:

MyDomain.com/?BikeID=1234&MakerID=1234
我不需要在URL中指定页面名称

我希望这两个URL访问不同的数据:

MyDomain.com/?BikeID=1234&MakerID=1234 // goes to bike page
MyDomain.com/?MakerID=1234&BikeID=1234 // goes to maker page
因此,如果在MakerID之前的URL中出现BikeID,请转到Bikes.cfm页面。如果MakerID出现在BikeID之前,请转到Makers.cfm页面

是否有一种简单且现有的方法来安排URL键,使它们指向适当的页面

我是否应该将URL解析为一个列表,确定第一个ID并转到相应的页面?有更好的办法吗

如有任何想法、提示或想法,将不胜感激

更新——在URL中使用参数顺序显然是个坏主意,原因如下:

1) 许多程序将变量附加到URL
2) 某些程序可能会对变量重新排序
3)Google BooT可能不考虑相关的顺序,并且很可能不正确地索引站点。 感谢所有以积极的方式提供建议的人,我的方法可能是个坏主意,不会产生我想要的结果。感谢所有提出替代方法以产生我想要的结果的人


如果你们当中任何一位积极的人愿意把你的积极评论/建议作为答案,我很乐意接受它作为答案。

尽管我对整个想法深表疑虑,但如果我被迫这样做,我会这样做:

index.cfm:

<cfswitch expression="#ListFirst(cgi.query_string, '=')#">

  <cfcase value="BikeID">
     <cfinclude template="Bikes.cfm">
  </cfcase>

  <cfcase value="MakerID">
     <cfinclude template="Makers.cfm">
  </cfcase>

  <cfdefaultcase>
     <cfinclude template="Welcome.cfm">
  </cfdefaultcase>

</cfswitch>


你到底为什么要做这样的事?我从来没有听说过一个方案,实际上把URL变量顺序作为一个相关的考虑因素;听起来很疯狂。如果BikeID是第一个,这意味着主要的请求是在自行车上,这就是为什么我们去Bikes.cfm。如果有一个BikeID后跟一个MakerID,则bike是主要焦点,maker是次要焦点。如果MakerID是第一位,那么请求的焦点就放在自行车制造商身上,这就是他们被带到Makers.cfm的原因。如果有BikeID,我们会把它放在他们的自行车列表的顶部,因为我们会知道他们对某一辆特定的自行车感兴趣。这肯定会回来咬你。您无法确定URL字符串中参数的顺序。您至少应该添加一个参数,明确说明要加载哪个页面。它不必复杂;类似于
q=b
(表示“自行车”页面)的内容应该足够了。那么你就不必担心URL参数的顺序了,我不会说是mangled。我也不会叫他们“流氓”。我想说的是,几乎任何涉及URL的东西都会将URL参数
bikeid=1234&makeid=1234
makeid=1234&bikeid=1234
视为相同。(例如googlebot。)如果需要使用URL作用域操作URL查询字符串,猜猜看是什么?该结构中的键可以按任何旧顺序排列。你不能指望URL参数是按特定顺序排列的。那样的话会让人心痛。正如上面提到的那样,Google会考虑URL的相同,并且可能对你的网站的SEO造成一些伤害。这是个奇怪的主意。如果不想在url中添加任何附加内容,可以尝试使用cgi.http_referer来决定如何显示页面。“严重的疑虑”?真正地然而,你却没有提到为什么这可能是个坏主意。正如其他人可能会评论的那样,URL参数的顺序几乎从未被考虑在内。这是由于各种web服务器处理向URL字符串自动追加查询参数的方式造成的。作为经验法则,您通常不应该在应用程序逻辑中构建期望,即它们将始终以特定顺序存在——而是——如果它们存在的话,以及它们的值是什么。谢谢Shawn-您很好地表达了我的想法。我个人会使用“友好URL”,而不会偏离URL变量的放置顺序。您可以通过任意数量的URL重写模块来执行以下操作:而不是。例如,MS有一个对IIS是免费的。