0

私はgodaddycoldfusion共有ホスティングアカウントを使用しており、ユーザーにわかりやすい/直接のURLを提供したいと考えています。ドメインにワイルドカードを追加して、すべてのサブドメインが同じルートフォルダーを指すようにしました。

Application.cfcだけを使用して、DNSワイルドカードを適切な宛先にルーティングするにはどうすればよいですか?

index.cfmルートフォルダには都市が一覧表示されます。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が再度呼び出されるときに、リクエストスコープ変数'forward'をそこに配置して、潜在的な無限ループを停止します。

あなたはここでより多くの詳細を見ることができます:

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 に答える