on 6/23/03 2:10 AM Upayavira wrote:

> I've worked out how I'd like to implement permanent redirects. I'd appreciate 
> comments as to whether this approach is okay. I would rather have comments 
> before just doing it...
> 
> Add to o.a.c.environment:
> 
> public interface PermanentRedirector {
> 
>     void redirectPermanently(boolean sessionmode, String url) throws IOException, 
>               ProcessingException;
> }
> 
> Make HttpEnvironment and HttpResponse implement this interface. 
> HttpEnvironment.redirectPermanently() calls HttpResponse.redirectPermanently(). 
> HttpResponse.redirectPermanently() sets the status to 
> SC_MOVED_PERMANENTLY and sets a 'location' header in the response.
> 
> Then the RedirectToNodeBuilder needs to be extended to handle a 'permanent' 
> attribute for the <map:redirect-to> node.
> 
> Finally, in RedirectToURINode.invoke(), test to see if both the permanent attribute 
> has been set, and the current Redirector implements PermanentRedirector, and if 
> so, call redirectPermanently() instead of just redirect().
> 
> I think that does it. Am I breaking any contracts, or extending the sitemap 
> language when I shouldn't be?
> 
> So, why permanent redirects?
> 
> A 301 (Permanent Redirect) informs the user agent that a URL has changed
> permanently, and to use the new one form there onwards. Caching of the new
> page is as usual.
> 
> A 302 (Temporary Redirect) informs the user agent and any proxy servers in
> the loop that a URL has changed temporarily, and may change again. The
> user agent and any proxy servers will _not_ cache the new page. So 302's put an 
> extra load on the server and all elements downstream of it as the pages are not 
> cached.
> 
> And that's why 301s are better if the page has moved permanently, but 302s
> are fine for a temporary change.

+1 for me.

-- 
Stefano.


Reply via email to