Front end page urls
Front end page urls
I have an umbraco installation.
I published a content named "Account" and umbraco gave it this url /account
.
Fair.
/account
Then I published a content named "Register" under content Account (I allowed Account Doc Type to have Register Doc Type as child).
I would expect the url of the new content to be /account/register
, but umbrace gave it /register
.
/account/register
/register
Why is this happening? What's the point of allowing child content types, and building a content tree, if the urls are all from root? As a newbie to umbraco, I consider it a logic flaw. For a CMS that claims to be friendly, that's not friendly at all. I'm a developer but I can't waste half of my day looking for umbraco answers and tutorials online. A friendly CMS should be self explicatory while being used, and should take care of all common assumptions a newbie may have.
How can I make the Account->Register content node to appear in /account/register
url?
/account/register
1 Answer
1
I think what you're seeing is a side-effect of a feature in Umbraco that is supposed to support the pattern most develops use when creating an Umbraco website.
The best practice when building Umbraco websites is to create a "Website/Root/Site" document type and place this in the root of your hierarchical content structure. Beneath this document type you place each of your pages as direct children. This allows you to set hostnames and culture on your site as well as it allows you to keep your entire site in one "bundle", and it also allows you to do multiple subsites within the same Umbraco website. It is pretty common practice to structure your website this way.
However - as you expect - this would give your URLs such as domain.com/website/account/register
due to Website
now being an actual content node in Umbraco. As this is really not something anyone would want - Umbraco has a built-in feature allowing the top level node to be hidden from the URL path. This results in your URLs being domain.com/account/register
in this case.
domain.com/website/account/register
Website
domain.com/account/register
If you however consider your site - this feature results in your register page getting the URL: /register
since the /account
part is a top level node that will be ignored when generating URLs.
/register
/account
This behavior is triggered by the setting umbracoHideTopLevelNodeFromPath
which can be found in web.config
of your site (true
by default).
umbracoHideTopLevelNodeFromPath
web.config
true
I would however recommend that you do not change this setting and instead add in the root node for your site as it will make things easier for you to manage in the future - it is also the best practice way to structure a site.
This should result in URLs being generated the way you are expecting them to be. Child nodes will have URLs that reflect their name and location in the content tree.
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Thanks for taking the time to explain! I will try it. I took a break from this project for a while so I don't remember exactly what were the nodes I used. I thing I had a root node and account was under that node, but I may be mistaken. I will come back for your answer
– Thanasis Ioannidis
20 hours ago