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.