Joomla Menu items alias SEO works, but article alias SEO not working

all_by_grace picture all_by_grace · Jan 22, 2011 · Viewed 9.3k times · Source

I've got a problem with my Joomla site. The SEO for the menu item can work effectively. So if I type something like, "www.example.com/about", it will work and show the appropriate article page. So this shows that the SEF URL and apache mod_rewrite settings are correct.

My problem is with the Article alias SEO.

I added a new article called "privacypolicy", and by default Joomla created the alias for the article (privacy-policy). I then try to open this page (www.example.com/privacy-policy), but I got the 404 page not found error. I have tried to put this article in various sections and categories and tried to access the URL by using the full path (such as: www.example.com/categoryname/articlename), but I still got the 404 page not found error.

I then tried to add another dummy articles to test this SEF URL feature, and found out that the SEF URL feature is not working for the article alias. It works for the menu items alias (if you put the article as a menu item, such as in article / blog format).

My question is, how can I access the articles (using the alias URL), without having to put this article as a blog in the menu item? I even tried to use some Joomla SEO extensions and was hoping that this could fix the error, but I still got the same problem. I have changed my htaccess.txt to .htaccess (which I believe enables the the menu item alias to work effectively).

Below is the contents of my .htaccess file:

# @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

Thanks,

Bob

Answer

Brent Friar picture Brent Friar · Jan 22, 2011

In order for www.example.com/categoryname/articlename to work, there has to be a menu item for the parent category. If you don't currently have a menu item for the category, or would rather have a URL like www.example.com/articlename, simply create a new menu and don't put it in any module. The URLs will still work but you will not have any extra menus you don't want to display.