Common problems when enabling Search Engine Friendly (SEF) URLs

From Joomla! Documentation

Revision as of 12:55, 12 July 2013 by RCheesley (talk | contribs) (Updating with relevant information, removing old stuff which doesn't apply any more. Needs up to date IIS information for SEF URLs!)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Enabling Search Engine Friendly (SEF) URLs can cause problems if your website hosting is not properly configured to support the re-writing of URLs. There are many different combinations of server technologies and operating systems, so it is not possible to give definitive answers to every problem with SEF URLs, however some of the more common problems are listed below.

Is your server running Apache?[edit]

When you enable SEF URLS in Joomla! there is an option to re-write the URLs without /index.php/ which requires mod_rewrite (or the IIS equivalent) - if your server is not running Apache, or does not have the ability to rewrite URLs in this way, you will come across error messages with this option enabled. Try turning this option to 'no' and see if this method of re-writing works for you.

Is your server running IIS?[edit]

If you are using IIS check out these links which may be useful:

Did you clear your cache?[edit]

When you make any changes to SEF settings it is advisable to make sure that you clear your cache, and if you are caching URLS (for example using a third-party SEF extension) make sure that you change any settings there, and purge cached URLs if necessary.

Have you moved domains?[edit]

Sometimes if you have changed domains (for example from a localhost or test environment to the live domain) you will need to edit the value for the $live_site variable in the configuration.php file found in the root directory of your Joomla site files. The value of the variable must be manually edited, it cannot be accessed via the Global Configuration screens.

Typically, it would look like:

var $live_site = 'http://example.com';

Or, if you access your website in a sub-folder called joomla, it would be like this:

var $live_site = 'http://example.com/joomla';

When you move domains, this value may need updating to reflect your new domain name:

var $live_site = 'http://mynewdomain.com';

Often, there is no need to specify this variable at all - in which place simply leave it blank:

var $live_site = '';