One of Joomla’s greatest features is the robustness of its CMS. However with this robustness comes Joomla’s main drawback – lack of a better “out of the box“ search engine friendliness that some systems, such as WordPress boast.
While there are some great extensions developed to help users optimize their Joomla CMS, it really is best to get down and dirty with the system so you can learn the ins and outs and ensure everything is well optimized.
As this post is meant to guide you through learning how to optimize your Joomla CMS, I will not refer to any specific extensions that you can use ““ no taking the easy way out here! Plus the extensions available really don’t resolve all the issues that you may encounter with Joomla (and I cannot guarantee any extensions will continue to be updated by their authors.)
Dealing With Joomla’s SEO Shortcomings
Joomla’s main SEO problem revolves around the massive amounts of duplicate content the system easily creates through its URL naming conventions, links and modules. I will discuss strategies for overcoming these obstacles, how to create search engine friendly URLs, and provide some great tips on speeding up the robust system that is Joomla.
This post will discuss into the following issues:
- HTACCESS
- SEF URLs
- Avoiding Duplicate Content
- Introduction to Joomla’s somewhat confusing cache system.
- Tips and tricks to increase Joomla’s speed and efficiency.
Introduction to Joomla’s HTaccess
Upon first installing Joomla, you should locate your htaccess file; this will be found in the root of your Joomla install. By default, this file comes labeled as “htaccess.txt“ you will want to rename this to “.htaccess“ for it to function properly.
Note ““ this requires that your hosting platform be based on Apache with MOD_rewrite turned on. Most servers will have this configuration, however if you host your own server or have a unique setup using IIS you will want to install an ISAPI filter which will mimic Apache’s mod_rewrite rules. You can now enable a slightly different version of search engine friendly URLs without Apache MOD rewrite in the instructions below.
If you are unsure whether or not you are running Apache, you can check this through the Joomla backend by following the below steps:
- Login to the admin area
- On the very top menu you will see “Help”
- Click on “System Info”
- Click on the tab labeled “PHP Info”
Scroll down to the section called Apache ““ You might see “Apache2handler“ and “Apache Environment“ the “Apache2Handler“ section should give you your Apache version and also list Loaded Modules.
Once you have renamed your HTaccess and verified that you are using Apache you can move on to the next step of assigning SEO Friendly URLs. By default, Joomla provides dynamic URLs that appear as:
www.domainname.com/index.php?option=com_content&task=blogsection&id=0&itemid=9
By enabling search engine friendly (SEF) URLs you will see a much cleaner URL that looks like:
www.domainname.com/seo/joomla-seo-tips.html
Note before following the below steps:
I do not recommend following the below steps on if your Joomla based site is already set up and indexed. Changing the URL structure using the steps below will cause all currently indexed pages to lead to a 404 error page. You can get around this by using 301 redirects, but it is best to assign SEF URLs when you are first setting up Joomla.
Assigning SEF URLs
Assigning SEF URLs on Joomla Installs Running Apache:
- Log in to the administrative backend
- Click “Global Configuration” which is generally an option on the default login page, or can be found under the top menu “Site” – > “Global Configuration”
- You will see a small box to the left side labeled “SEO Settings” ““ mark all as “yes” (it is normal to see the yellow caution symbol)
- Clear your cache and revisit your site
Enabling SEF URLs without Apache
Follow the steps above, but be sure to leave “Use Apache mod_rewrite” checked as “no”.
Your URLs will now be similar to ones using Apache, but will include an “index.php” within the URL like so”: www.domainname.com/index.php/seo/joomla-seo-tips.html
Check these options:
Duplicate Content Issues
While Joomla is a very robust CMS, however, it is also ripe with duplicate content issues. With Joomla, Canonical URLs are difficult to implement. If you place the rel=canonical code directly into the HTML area of your Joomla template ““ this canonical element will appear on all Joomla pages. This can have negative consequences for your entire site. Correctly implementing canonical instructions within Joomla can be a very difficult process and vary depending on your templates code.
Due to the difficulty in setting up a canonicalization tag, I would suggest redirecting your non-www to a www (or vice versa) using htaccess:
Open your .Htaccess file and locate:
RewriteEngine On
Place the below code, right after the code above:
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
*Change domain.com to your actual domain name.
Duplication Issues with PDF & Print
The default Joomla setup provides a PDF and Print version of each article you publish. These options will appear as small icons (depending on your theme) to the top right side of your posted article. These versions are not automatically labeled with no-follow, and as such appear as duplicate versions of the same page to search engines.
There are three ways to correct this issue depending on your preferences and how technical you wish to get
-
Turn off PDF and Print versions in the Joomla Backend. This will remove the icons and links from your articles.
If you would like these versions to appear, you can also use one or both of the below methods:
-
Block search engines from accessing these pages within your robots.txt file
-
Add “no-follow“ to the links in your Joomla code:
Locate the components/com_content/content.html.php file
Find this line:
<a href="<?php echo $link; ?>" target="_blank" onclick="window.open(‘<?php echo $link; ?>’,’win2″²,'<?php echo $status; ?>’); return false;" title="<?php echo _CMN_PDF;?>">>
Change it to:
<a href="<?php echo $link; ?>" rel="nofollow" target="_blank" onclick="window.open(‘<?php echo $link; ?>’,’win2″²,'<?php echo $status; ?>’); return false;" title="<?php echo _CMN_PDF;?>">>
Duplicate Content through Different URLs
Another issue of duplicate content arises in Joomla’s default URL naming conventions. For instance, if you have an article or page without a menu item associated with it, and then also link to that page or article from a menu module you will end up with two completely different URLs to the same page. These will often appear as:
Domainname.com/category/article-title.html
Domainname.com/menu-name/article-title.html
Google does not spot these pages as duplicated content and treats them as two individual pages. I have seen instances where one version will have a page rank of 3 while another will have a page rank of 5.
To fix this, you will have to be observant in your linking habits. If you are linking to a page from multiple menus or locations, make sure to use one link in all instances. For links within a menu ““ rather than choosing “article“ and selecting the article you wish to link to, it is best to choose the “external link“ option and add the currently existing link rather than creating a new one.
Joomla extensions, such as calendar extensions often create many additional pages ““ the majority of which may be duplicate content. In instances like this, it is best to block the entire module from being accessed by search engines through your robots.txt file.
Other Joomla Optimization Tips
Heading Tags
While Joomla gives you the option to add H1-H6 tags in the article editor, no heading tags are assigned to your article title by default. There is a hack you can use on Joomla core files to get around this below. Note that when making changes to the core files, you will have to re-apply the changes when you upgrade Joomla. I recommend keeping a copy of any files you made changes to so you can easily add the changes back in after you upgrade.
If you are nervous about editing Joomla’s core files, you can choose not to display your article title, and create a second title within your editor and give it an H1 tag.
You will need to edit the following files:
joomla-site.com/components/com_content/views/archive/tmpl/default.php
joomla-site.com/components/com_content/views/article/tmpl/default.php
joomla-site.com/components/com_content/views/category/tmpl/default.php
joomla-site.com/components/com_content/views/frontpage/tmpl/default.php
joomla-site.com/components/com_content/views/section/tmpl/default.php
Within each of these files, search for “componentheading“ then add your H1 tag around the PHP code. Here is an example:
The code will look like this:
<div class="componentheading<?php echo $this->params->get(‘pageclass_sfx’);?>"><?php echo $this->escape($this->params->get(‘page_title’)); ?></div>
Add an H1 tag so it looks like:
<div class="componentheadingparams->get(‘pageclass_sfx’) ?>">
<h1><?php echo $this->escape($this->params->get(‘page_title’)); ?></h1>
</div>
After making this change, you may need to normalize the font size of the H tag in your CSS. You would make this change in your Template CSS and add a line like:
.componentheading h1 { font-size: 16px; }
Meta Content
To avoid having the global Meta Description listed on every Joomla article, I suggest adding your own meta description to each article individually. Simply open your article, click on “Metadata Information“ to expand it, and add information into the fields available.
The Need for Speed
There are a couple steps you can take to improve the performance of your Joomla website. Now that Google has launched Caffeine, website speed is another factor to consider in your overall optimization strategy ““ and any improvements you can make stand to have a positive impact not only for SEO but your sites visitors.
The Joomla Extension Directory, or JED, houses extensions for just about anything you could want. Use caution when adding extensions to your site, just because there are a lot of widely available, or even well rated extensions doesn’t mean you should install them all. Another issue is that even with your Extensions and Modules left as “unpublished“ this can still slow down your site.
Every time a page is loaded, these modules are called whether they are published or not ““ this can be a huge drain on resources. Regularly delete extensions that are not being used, and check how any newly installed modules and extensions affect your site loading time.
Extensions you want to be particularly wary of include statistical add-ons. These add-ons use a ton of SQL queries to generate the data displayed but severely affect your sites performance. Generally, these statistical programs will not show you anything different than you can see by logging into Google Analytics. I suggest saving your site the load time and use GA instead.
Joomla comes with a Gzip compression feature. This can be found under;
Global Configuration / Server / Server Settings.
You can enable GZip to send compressed HTTP responses which will help your site load time. Enabling GZip will cause your CPU to work harder, so if you are not sure if your server can handle it, you may want to check with your host. After enabling, you should also check to ensure you are not getting any CPU warnings.
In addition to GZip, Joomla has two caching options available, one for modules and another for pages. To enable caching on pages, see;
Extensions -> Plugin Manager
…from the menu. In the drop down box (upper right hand side) choose “system” and locate the plugin “System Cache”. You can enable the plugin directly from this page or click on it to set various options such as browser caching and lifetime. If your Joomla site uses any community plugins, you should test how well those work after enabling. Some people have reported front-end login issues when using this.
Joomla’s second caching option is module caching, which can be found under;
Global Configuration -> System and then Cache Settings.
You can set your caching options for your modules there.
You can also select caching options for each module directly. If you select to use the global configuration within the module, it will follow the settings you set here. There are a lot more details involving the Joomla cache feature, which will be too lengthy to list here. If there is enough interest, I will create another post discussing Joomla’s caching system more in depth.
For better performance, you should optimize your database on a regular basis. You can do this through phpMyAdmin, selecting all tables and choosing “optimize“
Following the above steps should give you a speedy optimized structure to begin building your content around. Of course your search engine optimization efforts don’t end here, but this will provide you with a much better framework to start with than the default Joomla install.
Other useful Joomla Resources:




Good post Rebekah. Would be handy for me next week when I start building a website using Joomla. Been a while since I used this CMS.
Cheers!
I am curious as to the value of category description in SEO. If i link to a category and expect the category description, since its at the top, to contribute to the value of that page, am I missing something?
For example, I have staff for a location called Carmel. Each staff has their own article, basically the category link is that of a directory. However, their pages are not likely to be SEO helpers. So i need the category description to achieve this or otherwise create another page dedicated to carmel for just this purpose. thoughts?
Awesome information Rebekah.Great information! I have been looking for something like this for a while now. Thanks!
Good info. This covers about all you need to know about SEO with Jommla. Thanks for clearing things up!