我正在使用godaddy coldfusion共享主机帐户,我想为我的用户提供更友好/更直接的网址。 我已经为我的域添加了一个通配符,因此所有子域都指向相同的根文件夹。
如何仅使用Application.cfc将dns通配符路由到适当的目的地?
根文件夹中的 index.cfm
将仅列出城市
如果存在,则访问city.domain.com会显示domain.com/city/index.cfm
,如果不存在,则显示domain.com/index.cfm
。
我尝试了cflocation,但我认为它进入了一个无限循环。
答案 0 :(得分: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>
答案 1 :(得分:1)
如果放在root / index.cfm的顶部,听起来你的现有代码可以正常工作。您可以使用Application.cfc中的onMissingTemplate()来补充它,以处理404情况。
答案 2 :(得分: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;
}
我将请求范围变量'forward'放在那里以停止潜在的无限循环,因为再次调用Application.cfc。
您可以在此处查看更多详细信息: