When I did the gradual upgrade I found that several sites had the welcome page set to UpgLandingPgRedir.aspx when it should have been set to default.aspx. I didn’t have time to figure out why it was doing this but the fix was easy enough – I just had to change the welcome page back. To do this I created a new command: gl-sitewelcomepage. The code to set this is really simple – basically just get a PublishingWeb instance and set the DefaultPage property to a valid SPFile object:

 1string url = Params["site"].Value.TrimEnd('/');
 2string page = SPHttpUtility.UrlPathDecode(Params["welcomepage"].Value, true);
 3
 4using (SPSite site = new SPSite(url))
 5using (SPWeb web = site.AllWebs[Utilities.GetServerRelUrlFromFullUrl(url)])
 6{
 7    if (!PublishingWeb.IsPublishingWeb(web))
 8        throw new SPException("The specified site is not a publishing web.");
 9
10    PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web);
11
12    bool flag = false;
13    SPFile file = null;
14    try
15    {
16        file = pubWeb.Web.GetFile(page);
17        flag = file.Exists;
18    }
19    catch (SPException)
20    {
21        flag = false;
22    }
23    catch (FileNotFoundException)
24    {
25        flag = false;
26    }
27    catch (ArgumentException)
28    {
29        flag = false;
30    }
31
32    if (!flag || file == null)
33        throw new SPException("The specified welcome page could not be found.");
34
35
36    PublishingWeb currentPublishingWeb = pubWeb;
37    currentPublishingWeb.DefaultPage = file;
38    currentPublishingWeb.Update();
39}

The syntax of the command can be seen below:

C:\>stsadm -help gl-sitewelcomepage

stsadm -o gl-sitewelcomepage

Sets the page to be used as the welcome page for the site.

Parameters:
        -site <url of the site to update>
        -welcomepage <full url to the page to use as the welcome page>

Here’s an example of how to set the welcome page for a site:

stsadm -o gl-sitewelcomepage -site "http://intranet/sites/teamsite1" -welcomepage "http://intranet/sites/teamsite1/pages/default.aspx"