Использование Application.cfc для маршрутизации подстановочных знаков DNS - PullRequest
0 голосов
/ 31 января 2011

Я использую общий хостинг-аккаунт godaddy coldfusion и хочу, чтобы мои пользователи указывали более дружественные / прямые URL. Я добавил подстановочный знак в свой домен, чтобы все дочерние домены указывали на одну корневую папку.

Как использовать только Application.cfc для маршрутизации подстановочных знаков dns в их соответствующие пункты назначения?

index.cfm в корневой папке будет просто список городов Переход на city.domain.com должен вызвать domain.com/city/index.cfm, если он существует, и domain.com/index.cfm, если его нет.

Я попробовал cflocation, но думаю, что он зашел в бесконечный цикл.

Ответы [ 3 ]

2 голосов
/ 31 января 2011

Вы должны убедиться, что вы проверяете правильные вещи в 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 голос
/ 01 февраля 2011

Вы всегда можете выполнить перенаправление на стороне сервера и скрыть все это от клиента.

Таким образом, регулярные запросы идут на 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 вызывается снова.

Более подробную информацию вы можете увидеть здесь:

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

1 голос
/ 31 января 2011

Похоже, ваш существующий код будет работать нормально, если поместить его в верхнюю часть root / index.cfm Вы можете дополнить это с помощью onMissingTemplate () в Application.cfc для обработки 404 ситуаций.

...