My Channel entry page's URL is something like the following:


The {field_1}-{field_2}-{field_3}... part is actually just something I add to the links I generate. They aren't actually being used on the Channel entry page. Only the template_group/entry_id/ matters (from what I can tell).

I'm adding those additional details at the end to hopefully generate SEO friendly URLs. Am I on the right track or is there a better "EE way"?

Also, I want to offer some SEO features when making a Channel entry. I'm not well versed into SEO, but the only 2 fields I can think of are meta keywords (which is pretty much useless from what I know), meta title (same as <title>?), and meta description. Should I just add these 3 fields and let the SEO person fill these out? Or is there a better approach than this? It would be nice if there was some logic I could implement that would auto populate these fields in case the user doesn't populate them.

6 Answers 6


In general, your best bet for SEO is to synchronize "the trinity" –

  • Page title
  • URL
  • H1 heading

If you had a blog entry, on a single-entry page, called "One More Blog Entry" –

  • Page title (the <title> tag): One More Blog Entry
  • URL: /blog/post/one-more-blog-entry
  • H1 heading: One More Blog Entry

If this were the About Us page, it would be:

  • Page title (the <title> tag): About Us
  • URL: /about-us
  • H1 heading: About Us
  • Navigation link: About Us

This is a big reason why ExpressionEngine generates the URL title (url_title) from the Title field: It's for SEO benefits. Stringing together fields to generate a URL is not going to match the content.

I typically use NSM Better Meta to allow clients to edit meta descriptions and page titles, and to set up my own page title rules. (Those are typically <title>{title} : Site Name</title>.) You could set up your own meta description field in your fields and load that in. Note that meta keywords are now ignored by search engines because they were abused. Meta descriptions don't factor in much either, but they're valuable on Search Engine Results Pages (SERPs) because they tell the user what the page is about.

Considering that you were looking at building your URL by stringing together fields, you might want your title to be a composite of those fields. In that case, I would recommend looking at MX Title Control to generate your title when you're loading your entry, and to have the url_title based on that.

Making your url_title/page URLs different than your title/<title>/page heading is going to hurt SEO.

Note that you can also hide the URL Title field, making it so the user can not edit it, and keeping it in synch with the Title field.

Also note, to expand on built-in support for SEO, one of the benefits of using Structure is that it outputs navigation as I described: With the Title field as the linked value, matching the entry/page title and URL.

Updated: By default, your {exp:channel:entries channel="some_channel"} tag will load the corresponding entry if there's a url_title match on the last segment. Entries will automatically load based on a match for entry_id or url_title. See {title_permalink}.

Updated: To hide the URL Title field, use Publish Layouts. Click the little "Show Toolbar" link in the top right corner of the Publish screen for that channel. In the list of fields on the right, click the "eye" to the right of URL Title. Save that Layout and the field will be hidden. MX Title Control will hide your Title field if you configure it to build the Title value from other fields in the entry.

  • "Stringing together fields to generate a URL is not going to match the content." <-- I'm not sure why you think this. In fact, my URL + <title> + <h1> are all the same because I concatenate the same way in all instances. Did I miss something? How do I hide the URL title field? I actually want to hide that AND the title (and again use Channel fields to dynamically generate the title). Commented Feb 5, 2013 at 19:28
  • "In fact, my URL + <title> + <h1> are all the same because I concatenate the same way in all instances." The original post did not indicate you were mirroring that within the title & H1, only that you were doing it on the URL. Why not just make that the title? It sounds like you're doing extra work. The MX Title Control add-on I cited will do that for you, if title should build off those fields. If title+url_title match that convention, the built-in {title_permalink} will always give you the link/URL you need. It seems like you're reproducing built-in functionality. Commented Feb 5, 2013 at 19:31
  • Updated with how to hide the URL Title field. I believe that Publish Layouts will not let you hide the Title field. MX Title Control hides the Title field for you, because it builds it off of the content of other fields automatically. Hope that helps! It then becomes a matter of the order of operations: This method generates a Title/URL Title based on the 3 fields, within the entry. Then {title} and {title_permalink} just work, consistently. The path you've gone down requires you compensate for those 3 fields in your templates, risking inconsistency. Commented Feb 5, 2013 at 19:37
  • Actually, my <h1> is has the company name (by the logo). It's my <h2> that has the concatenated fields. Is that still OK for SEO? Commented Feb 5, 2013 at 19:47
  • That's a tough call. In the past I've done the same, making H1 the logo. These days, we tend to make H1 the heading that matches the page title, links to the page in nav, and most prominent content heading on the page. We treat the company name / logo as part of the consistent page header/navigation, typically linking it to the homepage. Commented Feb 5, 2013 at 19:48

Regarding adding metadata I have you looked at the following:

SEO Lite & Better Meta http://devot-ee.com/add-ons/seolite and http://ee-garage.com/nsm-better-meta (inc sitemaps)

For no follow links theres: http://devot-ee.com/add-ons/no-follow (though it's straigtforward to add yourself)

For sitemaps there: http://devot-ee.com/add-ons/sitemap-module

And I assume you've been over to Google Webmastertools and read their stuff

I see your adding stuff to the url - nothing wrong with this method but always remember that content is for humans, SEO specialists can often (not always) be charlatans.


I don't think you should be appending random keywords to the end of your URLs. You should educate the client to use appropriate URL Titles when they publish content.

Duplicate content will affect your site negatively in terms of SEO.

Take the following URL for example: http://site.com/news/article/1/keyword1/keyword2/keyword3

In your template, it sounds like you might be doing something like this:

{exp:channel:entries entry_id="{segment_3}" ...}

But your page could also be reached by:

Google sees these as separate pages with the same content. Not good.

Other people have already touched on the topic of <title> and <meta> tags as well as appropriate headings.

  • You are right that Google bot would be able to access my content via those various URLs. However, if I am consistent with the links I generate on my site, use XML sitemaps, etc. -- would I be safe? Potentially, I could put a check for the segments after entry_id and not display anything if they don't exist? Commented Feb 5, 2013 at 19:31
  • Seems like a lot of trouble for keywords. Why not just use url titles? You can put keywords in there... Commented Feb 5, 2013 at 20:35

IFor your url's i'd recommend using switchee, as this addon will give you good control over your url's, templates and performance.

I would not use the entry_id in the url, rather use the url title, as this is better for seo. my url's are typically: http://domain.com/template-group/template/url_title/ and with switchee it's pretty easy to have more segments when needed.

There are a lot of possible things you can do with channel fields. First it's always a good idea to create fields for browsertitle, description and keywords. Also, you can create fields for link-title's, alt text etc.

In your template you can check if a field is empty, and if so, parse some default text, a global variable or other information from the entry. It's a good idea to use switchee here too, intstead of {if} statements.

Also, be sure to use your h1's, h2's etc wisely. Content is still most relevant, more so than technical structure.

  • I'm not sure I understand how Switchee helps with my URLs. As for using entry_id vs URL title, I feel more comfortable using entry_id. The URL title is entered by the user, which may or may not do a good job with the URL title. My data is such that I can always build a good URL using the fields in the Channel. My mark up is semantically correct. Commented Feb 5, 2013 at 9:41
  • what you can do, is hide the url title field in a publish layout, that way the user cannot enter it and a valid url title will be generated by EE. Switchee can help you with you url's in the way that you an tell it things like "if segment_1 == '' do this, if segment 1 != '' do that" Commented Feb 5, 2013 at 15:51

I'll give a thumbs up for SEO lite. Configured correctly, it can make light work of matching your page title, H1, etc, and do it automatically from channel fields, or when needed, can be overridden in the publish cp.

I've had good search results from it, and pages in google are getting found well.

I would also agree that

domain.com/template-group/template/url-title is the way to go for a nice easily readable, friendly url.


Have you looked at your traffic sources? Does it really make sense to work hard on SEO-friendly URLs. What´s the difference between




when a significant portion of your users arrive via


anyway. With social and mobile usage un the rise the URL-shorteners won´t go away anytime soon. Mobile users very often don´t see the URL at all on their device and Google is pretty smart, when it comes to figure out URLs. EE has solid SEO capabilities build in (see answers above). I would use them and not try to customize EE too much here, as it all comes with a cost. - You need to come up with a URL-scheme - Implement it - Maybe buy an add-on like NSM htaccess - Make sure, that you have the same environment in stageing and production The more stuff you have to manage, the higher the chance, that something will break.

I´d rather make sure, that Google sees me as a distinguished author (get a G+-account, add a decent photo and link back fromm every Single Entry with rel="author" to that profile).

To boost click-throughs on Google I would focus on

  • creating a snappy headline (there is a reason, why the guys from Upworthy rewrite headlines 25 times.
  • having a photo next to the article (the G+-stuff)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.