[Twisted-web] disabling redirection

Markus Schiltknecht markus at bluegap.ch
Fri Jun 15 12:31:36 EDT 2007


Some time ago, I wrote:
> Here's how to reproduce my problem:
 > ...

And now, here comes how I've solved it. My solution forces nevow to 
think, that the request has been made for a given host and port. If 
that's not really the case, nevow will serve the Resource anyway - 
that's no different from not using the ForcedHost wrapper. Only in case 
nevow wants to issue a 301 redirect (due to addSlash=True), the forced 
host (and port) apply. Nevow will redirect to that host:port.

class ForcedHost(rend.Page):

	def __init__(self, res, host, port=80):
		self.wrappedResource = res
		self.host = host
		self.port = port

	def locateChild(self, ctx, segments):
		request = inevow.IRequest(ctx)
		request.setHost(self.host, self.port)
		return self.wrappedResource.locateChild(ctx, segments)

siteRoot = ForcedHost(MyNevowResource, 'www.my-forced-site.org')

Does anybody see any problems with this approach?



More information about the Twisted-web mailing list