I get many questions about SEF. Joomla has it's own settings for SEF and there are a few good 3rd party SEF extensions available:
Artio JoomSEF:
http://www.artio.net/en/joomla-extensio ... io-joomsef
sh404:
http://extensions.siliana.com/
No matter whether you use the Joomla default SEF or a 3rd party SEF, a few things need to be taken care of.
1. in your global configuration you need to set it as the picture below shows:
2. As the yellow exclamation mark in the above picture will show, you will need to rename the file htaccess.txt to .htaccess (Be sure the dot in front of htaccess is there, this is a must!!!)
This should basically get things working for SEF.
Some websites might however give you a 500 error. This might be due to a certain setting in the .htaccess file.
Here is the default .htaccess as it comes in your Joomla installation:
##
# @version $Id: htaccess.txt 10492 2008-07-02 06:38:28Z ircmaxell $
# @package Joomla
# @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##
#####################################################
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################
## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks
#
# mod_rewrite in use
RewriteEngine On
########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
# RewriteBase /
########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section
On some webservers it is necessary to change the rewrite base, that is this part of the .htaccess:
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
# RewriteBase /
Uncommenting is done by removing the #
Should you encounter a 500 error, try to change this into:
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
RewriteBase /
Sometimes people do not install their Joomla into the root of the webserver, but into a subfolder. this is the case when for instance you have your url in the following way:
http://www.yourdomain.com/joomla
In this case when you still encounter a 500 error, you may want to try setting your RewriteBase to:
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
RewriteBase /joomla
Of-course should your subfolder be named different than joomla, it will get that subfolder's name.
Then one tip for the 3rd party extension sh404. That has a certain setting for using Apache Rewrite or not. What I often see is that people using sh404 have SEF urls in the following way:
http://www.yourdomain.com/index.php/blog
As you can see, that index.php is not really friendly. This is a pesky setting that at first is a bit hard to find in sh404. You can do the following in your sh404 component:
When you have "extended display" on, click on the sh404 SEF configuration icon. After that, click on the "Advanced" tab. Then set the Rewriting mode to "with .htaccess (mod_rewrite)" as shown on the picture below:
After you have done this, click on "Save" at the right top.
In some rare occasions, you could have a chance that no matter what your settings are, you can't get SEF running. It might be the case that your provider does not have Apache (= webserver) mod_rewrite on. This is a necessity for SEF urls to run. If you still encounter errors even after you have tried all that has been written here, inform at your provider if they have Apache and the mod_rewrite module running.
Let me know when you still encounter problems.