This article applies to SharePoint 2007, 2010, 2013, 2016 and SharePoint Online.
I frequently get questions on changing the home page or using another page as the home page:
- Can I have a custom web part page with three (or four or five or…) columns as my home page?
- Do I have to use the new wiki home page in my Team Site?
- I want to test a new home page design, but I don’t want to lose the existing home page… (just in case you know…)
- How can I use a page from my wiki library as my home page?
Below are four ways to set another page as your home page: (all four work for both 2007 and 2010)
- From Site Settings (If the publishing features are enabled)
- From SharePoint Designer
- From code / API
- From PowerShell
The first two can be used by Site Owners, the second two can only be used for developers and administrators.
Important notes for all four methods:
Make sure all of your users have at least read access to the new home page, and if in a library that you have it checked in and published.
Changing the home page changes the URL that some users may have added to their favorites. When sharing links to your site, exclude the home page's library and file name.
If the publishing features are enabled for a site then:
Site Actions, Site Settings, Welcome Page
(that was easy!)
2013 and 2016:
From SharePoint Designer:
Go to your Site Pages library, or click All Files and then your library. Right-click the new page and click "Set as Home Page". (For SharePoint 2007 this only appears to work from SharePoint Designer if the file is in the root of the site. I.e. the same place as default.aspx.)
Via the API:
C# and VB developers can use the SPFolder.WelcomePage property. See:
For SharePoint 2010 and later:
$site = Get-SPSite http://yourserver/sites/yoursite $web = $site.RootWeb (or $web = $site.OpenWeb("yoursubsite") $folder = $web.RootFolder $folder.WelcomePage = "SitePages/home.aspx" (or $folder.WelcomePage = "default.aspx") (or $folder.WelcomePage = "Shared%20Documents/mycustompage.aspx") $folder.update() $web.Dispose() $site.Dispose()
For SharePoint 2007 (the first two lines are different):
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") $site = New-Object Microsoft.SharePoint.SPSite("http://yourserver/sites/yoursite") $web = $site.RootWeb (or $web = $site.OpenWeb("yoursubsite") $folder = $web.RootFolder $folder.WelcomePage = "SitePages/home.aspx" (or $folder.WelcomePage = "default.aspx") (or $folder.WelcomePage = "Shared%20Documents/mycustompage.aspx") $folder.update() $web.Dispose() $site.Dispose()