Different values of SPSite.URL and SPWeb.URL
------------------------------------------------------------------------------------------------------------
There are some properties for SPSite and SPWeb class using which we can get the URL values for the sites and webs. The two most used of these properties are - 'ServerRelativeUrl' and 'Url'
As a developer we use the values of the properties for writing some logic for satifying the business needs. Whenever I used to write a OM code to use these properties, the first question which flashes in my mind - "What values are returned by these properties?". I immediately create a cosole application, and check the values returned by these properties and contiue with the actual work. I have seen many other developers doing this. So, for a quick reference I prepared the below table which has the url values returned by these properties.
Some poeple may find this easy, but some (like me ;)) get confused when the sites have managed paths. These properties return the managed path if the site has one. Here goes the list
SCENARIO 1: A Site Collection (SPSite) without any managed path.
| Value | |
|---|---|
| SPSite.ServerRelativeUrl | / |
| SPSite.Url | http://rams |
| SPWeb.ServerRelativeUrl | / |
| SPWeb.Url | http://rams |
| SPSite.ServerRelativeUrl | / |
| SPSite.Url | http://rams |
| SPWeb.ServerRelativeUrl | /about |
| SPWeb.Url | http://rams/about |
This looks pretty simple. We get confused when sites are created using managed paths. Below are the samples values for site created with managed paths
SCENARIO 2: A Site Collection with a managed path (of type Explict inclusion). For the below URL '/my' is the managed path
| Value | |
|---|---|
| SPSite.ServerRelativeUrl | /my |
| SPSite.Url | http://rams/my |
| SPWeb.ServerRelativeUrl | /my |
| SPWeb.Url | http://rams/my |
| SPSite.ServerRelativeUrl | /my |
| SPSite.Url | http://rams/my |
| SPWeb.ServerRelativeUrl | /my/about |
| SPWeb.Url | http://rams/my/about |
SCENARIO 3: A Site Collection with a managed path (of type Wilcard inclusion). For the below URL '/sites' is the managed path, and a site collection is created at '/blog'
| Value | |
|---|---|
| SPSite.ServerRelativeUrl | /sites/blog |
| SPSite.Url | http://rams/sites/blog |
| SPWeb.ServerRelativeUrl | /sites/blog |
| SPWeb.Url | http://rams/sites/blog |
| SPSite.ServerRelativeUrl | /sites/blog |
| SPSite.Url | http://rams/sites/blog |
| SPWeb.ServerRelativeUrl | /sites/blog/about |
| SPWeb.Url | http://rams/sites/blog/about |