httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Behlendorf <br...@hyperreal.com>
Subject cvs commit: apache/src mod_alias.c
Date Mon, 18 Nov 1996 20:47:23 GMT
brian       96/11/18 12:47:22

  Modified:    src       mod_alias.c
  Log:
  Reviewed by:	Mark Cox, Brian Behlendorf
  Submitted by:	Paul Sutton
  
  Fixed errors with RedirectTemp and RedirectPermanent directives, as well as
  added the ability to redirect using any 3xx class of error.
  
  Revision  Changes    Path
  1.11      +37 -13    apache/src/mod_alias.c
  
  Index: mod_alias.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/mod_alias.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -C3 -r1.10 -r1.11
  *** mod_alias.c	1996/11/04 09:34:04	1.10
  --- mod_alias.c	1996/11/18 20:47:19	1.11
  ***************
  *** 65,71 ****
        char *real;
        char *fake;
        char *handler;
  !     int redir_status;		/* 301, 302, 303 */
    } alias_entry;
    
    typedef struct {
  --- 65,71 ----
        char *real;
        char *fake;
        char *handler;
  !     int redir_status;		/* 301, 302, 303, 410, etc */
    } alias_entry;
    
    typedef struct {
  ***************
  *** 130,150 ****
        return NULL;
    }
    
  ! const char *add_redirect(cmd_parms *cmd, alias_dir_conf *dirconf, char *f,
  ! 			 char *url)
    {
        alias_entry *new;
        server_rec *s = cmd->server;
        alias_server_conf *serverconf =
            (alias_server_conf *)get_module_config(s->module_config,&alias_module);
  !     int status;
    
  !     if (!strcasecmp(url, "gone"))
    	status = HTTP_GONE;
        else {
    	if (!is_url (url)) return "Redirect to non-URL";
  - 	status = (int)cmd->info;
        }
        if ( cmd->path )
            new = push_array (dirconf->redirects);
        else
  --- 130,169 ----
        return NULL;
    }
    
  ! const char *add_redirect(cmd_parms *cmd, alias_dir_conf *dirconf, char *arg1,
  ! 			 char *arg2, char *arg3)
    {
        alias_entry *new;
        server_rec *s = cmd->server;
        alias_server_conf *serverconf =
            (alias_server_conf *)get_module_config(s->module_config,&alias_module);
  !     int status = (int)cmd->info;
  !     char *f = arg2;
  !     char *url = arg3;
    
  !     if (!strcasecmp(arg1, "gone"))
    	status = HTTP_GONE;
  +     else if (!strcasecmp(arg1, "permanent"))
  + 	status = HTTP_MOVED_PERMANENTLY;
  +     else if (!strcasecmp(arg1, "temp"))
  + 	status = HTTP_MOVED_TEMPORARILY;
  +     else if (!strcasecmp(arg1, "seeother"))
  + 	status = HTTP_SEE_OTHER;
  +     else if (isdigit(*arg1))
  + 	status = atoi(arg1);
        else {
  + 	f = arg1;
  + 	url = arg2;
  +     }
  + 
  +     if (is_HTTP_REDIRECT(status)) {
  + 	if (!url) return "URL to redirect to is missing";
    	if (!is_url (url)) return "Redirect to non-URL";
        }
  +     else {
  + 	if (url) return "Redirect URL not valid for this status";
  +     }
  + 
        if ( cmd->path )
            new = push_array (dirconf->redirects);
        else
  ***************
  *** 160,171 ****
        "a fakename and a realname"},
    { "ScriptAlias", add_alias, "cgi-script", RSRC_CONF, TAKE2, 
        "a fakename and a realname"},
  ! { "Redirect", add_redirect, (void*)302, OR_FILEINFO, TAKE2, 
  !     "a document to be redirected, then the destination URL (or \"Gone\")" },
  ! { "RedirectTemp", add_redirect, (void*)302, OR_FILEINFO, TAKE2, 
  !     "a document to be redirected, then the destination URL" },
  ! { "RedirectPermanent", add_redirect, (void*)301, OR_FILEINFO, TAKE2, 
        "a document to be redirected, then the destination URL" },
    { NULL }
    };
    
  --- 179,193 ----
        "a fakename and a realname"},
    { "ScriptAlias", add_alias, "cgi-script", RSRC_CONF, TAKE2, 
        "a fakename and a realname"},
  ! { "Redirect", add_redirect, (void*)HTTP_MOVED_TEMPORARILY, 
  !     OR_FILEINFO, TAKE23, 
  !     "an optional status, then document to be redirected and destination URL" },
  ! { "RedirectTemp", add_redirect, (void*)HTTP_MOVED_TEMPORARILY, 
  !     OR_FILEINFO, TAKE2, 
        "a document to be redirected, then the destination URL" },
  + { "RedirectPermanent", add_redirect, (void*)HTTP_MOVED_PERMANENTLY, 
  +     OR_FILEINFO, TAKE2, 
  +       "a document to be redirected, then the destination URL" },
    { NULL }
    };
    
  ***************
  *** 250,256 ****
            return DECLINED;
    
        if ((ret = try_alias_list (r, serverconf->redirects, 1, &status)) != NULL)
{
  !         table_set (r->headers_out, "Location", ret);
            return status;
        }
        
  --- 272,279 ----
            return DECLINED;
    
        if ((ret = try_alias_list (r, serverconf->redirects, 1, &status)) != NULL)
{
  ! 	if (is_HTTP_REDIRECT(status))
  ! 	    table_set (r->headers_out, "Location", ret);
            return status;
        }
        
  ***************
  *** 273,279 ****
        /* It may have changed since last time, so try again */
    
        if ((ret = try_alias_list (r, dirconf->redirects, 1, &status)) != NULL) {
  !         table_set (r->headers_out, "Location", ret);
            return status;
        }
    
  --- 296,303 ----
        /* It may have changed since last time, so try again */
    
        if ((ret = try_alias_list (r, dirconf->redirects, 1, &status)) != NULL) {
  ! 	if (is_HTTP_REDIRECT(status))
  ! 	    table_set (r->headers_out, "Location", ret);
            return status;
        }
    
  
  
  

Mime
View raw message