0

我正在使用 Godaddy Coldfusion 共享主机帐户,我想为我的用户提供更友好/直接的 url。我在我的域中添加了一个通配符,因此所有子域都指向同一个根文件夹。

如何仅使用 Application.cfc 将 dns 通配符路由到相应的目的地?

index.cfm在根文件夹中将只列出城市 Going to city.domain.com 应该会出现,domain.com/city/index.cfm如果它存在,domain.com/index.cfm如果它不存在。

我尝试了 cflocation 但我认为它进入了无限循环。

4

3 回答 3

2

您需要确保在 CGI.SERVER_NAME 中检查正确的内容。这样的事情应该可以解决问题:

<cfif ListLen(CGI.SERVER_NAME, ".") NEQ 2 AND ListFirst(CGI.SERVER_NAME, ".") NEQ "www">
    <cflocation url="http://domain.com/#ListFirst(CGI.SERVER_NAME, ".")#/index.cfm" />
</cfif>
于 2011-01-31T14:41:15.017 回答
1

如果将现有代码放在 root/index.cfm 的顶部,听起来您的现有代码可以正常工作。您可以使用 Application.cfc 中的 onMissingTemplate() 来补充它以处理 404 情况。

于 2011-01-31T14:41:58.500 回答
1

您始终可以进行服务器端重定向,并将其全部隐藏在客户端之外。

所以常规请求会转到 index.cfm (www.domain.com)

然后如果有一个城市(在 onRequestStart() 中):

city = ListFirst(CGI.SERVER_NAME, ".");
if(!StructKeyExists(request, "forward") AND (city != "www" || city != "domain"))
{
   request.forward = 1;
   getPageContext().forward("/#city#/index.cfm");
   abort;
}

我将请求范围变量“转发”放在那里以停止潜在的无限循环,因为 Application.cfc 再次被调用。

您可以在此处查看更多详细信息:

http://www.compoundtheory.com/?action=displayPost&ID=26

http://download.oracle.com/javaee/6/api/javax/servlet/jsp/PageContext.html#forward%28java.lang.String%29

于 2011-02-01T05:14:36.947 回答