SharePoint: How to change the default home page
I frequently get questions on changing the home page or using another page as the home page:
- Can I have three (or four or five or…) columns in the default 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 note 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.
If the publishing features are enabled for a site then:
Site Actions, Site Settings, Welcome Page
(that was easy!)
2007:
2010:
From SharePoint Designer:
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:
Via PowerShell:
For SharePoint 2010:
$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/mycustomwebpartpage.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/mycustomwebpartpage.aspx")$folder.update()$web.Dispose()$site.Dispose()