Updated: March 22, 2008

sh404SEFsh404SEF Documentation

for Joomla 1.0.x

Support site


You will find up to date information and support at extensions.Siliana.com. Please also check our forum at extensions.Siliana.com/forums/. Please read also our Frequently Asked Question, probably the best place to start with if something does not work as you like

Summary

Allows Search Engine Friendly URLs for Apache (and possibly but unsupported, IIS). You can also setup your own, custom URLs if you don't like those automatically built. Builds page title and meta tags, and insert them into page. Title and tags can be manually set as well. Provides security functions, by checking the content of URL and visitor IP against various security check lists, plus an anti-flooding system.

sh404SEF works well with Joomfish, and there are several plugins to build up URL for various components, including Virtuemart, Fireboard, Community Builder, Myblog, iJoomla Magazine and NewsPortal, Mosets Tree and Hot Property,.... If you use Joomfish, please take a look at the bottom of this document for a Joomfish fix to allow translation of content element Alias. If you use Virtuemart, please read the special note at the end of this document, where you will find a couple of fixes for Virtuemart 1.0.10 : one to work with Joomfish (comes from the Virtuemart forum), the other to allow smooth operation when using SSL mode (comes from NetshineSoftware).

It has a caching system, to reduce database queries and enhance page loading time when using URL rewriting.

sh404SEF can operate with or without mod_rewrite (that is with or without .htaccess file). Url are the same, except there is an added /index.php/ bit in them when not using .htaccess. This is now the default setting, as it is much easier to use. You may want to adjust your ErrorDocument as 404 errors will no longer be processed by Joomla when operating without a .htaccess file.

The integrated tool to manage your META tags, shCustomTags is a module that will rewrite Title, Description, Keywords, Robots and Language meta tags to your liking, on any page of your site. It has a plugin system to accomodate any component, and a Virtuemart and a regular content plugin are provided to automatically generate these tags. Plus, you'll be able to manually set any tags you like on a page by page basis (a page is identified by its URL). Plus you'll be able to set content title within h1 tags, and remove Generator = Joomla tags, plus perform various text replacement operations on your page.

There is no hack of Joomla, just a module. shCustomTags has been installed automatically with sh404SEF, but it not published initially. You must publish it and review instructions in its backend.

Both sh404SEF and shCustomTags have been tested only using Joomla 1.012 and VirtueMart 1.0.10 (should work with previous version of Joomla - don't know about previous versions of VirtueMart). Simple tests ahve been done with Joomla 1.0.13, so sh404SEF should not cause any problem there.

Many thanks to all previous contributors to 404SEF and 404SEFx

Documentation

IMPORTANT : if you plan to use mod_rewrite (.htaccess) rewriting :

BEFORE making any attempt to activate this component and use its URL rewriting functions, your Joomla installation should already be compatible with URL rewriting. This is not required if you select no .htaccess rewrite mode in sh404SEF advanced parameters (but this mode may not always work as well, depending on your server settings).

Remember : if you are having difficulties with this, it is unlikely to be a joomla problem, but most likely something related to your server setup. For instance, many times, you will be faced with 404 errors or Internal server errors 500 display. This indicates that there is something in your .htacces file that is not compatible with your apache server setup.

If you face this kind of errors, I will suggest you contact your hosting company for assistance.
If your .htaccess is not compatible with your apache server, or hosting company, there is no point in trying to use sh404SEF - or any other similar component like ARTIO Joomsef, OpenSEF or Advanced SEF - as they will simply not work. You will have first to fix your installation, paying particular attention to the existence and the content of your .htaccess file. However, one of the first thing to control : verify that mod_rewrite is loaded by PHP. To do this, in Joomla backend, go to System menu, then System information. On the PHP tab, just run a search for the word 'rewrite'. If you don't find anything, then mod_rewrite is not loaded and nothing will work. You need to change your Apache web server httpd.conf file, or contact your system administrator or shared host company to do this for you.

More advice on .htaccess, a very tricky issue on many occasions, can be found on line at . In a few words :

  1. Introduction

    Here are the main information bits required to use sh404SEF. You can view this documentation again by selecting the 'sh404SEF Documentation' button from the sh404SEF Control Panel.

    Please note that I cannot support IIS installation in any way. sh404SEF may well work on such machines, but it is not tested at all.

  2. Installation Instructions

    You can view installation instructions below by clicking the appropriate arrow.

    1. Installation
        1. Upload the zip file to Joomla using the component installer in the usual way.
        2. For apache, the .htaccess file that comes with Joomla is FINE!!
          There is just one line I would suggest you add to it:
          # Rule for duplicate content removal : www.domain.com vs domain.com
          RewriteCond %{HTTP_HOST} ^mydomain\.com [NC]
          RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L,NC]
          What this will do is rewrite all page requests starting with mydomain.com to www.mydomain.com. This way, you will avoid some duplicate contents issues (even though that is not really a problem nowadays, at least with Google), and also improve the way many editors, including JCE, will behave.
          You should replace mydomain\.com on the first line and www.mydomain.com by your own domain information of course.
          Also, you should place these 3 lines just after the RewriteBase line in Joomla standard .htaccess file.
          Lastly, you can also do it the other way around, that is rewrite www.mydomain.com to mydomain.com. To do this, simply use :
          # Rule for duplicate content removal : domain.com vs wwwdomain.com
          RewriteCond %{HTTP_HOST} ^www.mydomain\.com [NC]
          RewriteRule (.*) http://mydomain.com/$1 [R=301,L,NC]

        3. For IIS, see Configuring IIS..
        4. Ensure that SEF is enabled under Global Configuration in the Joomla backend.
        5. Edit the 404 SEF configuration, Change Enable to yes and save.
          This is neccessary to ensure the default 404 document gets saved to the Joomla database.
    2. Configuring IIS

      • IMPORTANT : The instructions below are provided as is, with no warranty. They are simply copied over from past version of 404SEFx, and I have absolutely no idea if they are correct or not. Any feed back on that matter is appreciated, and may passed over to other people using the support forum at extensions.Siliana.com/forums/. Please not that good results have been reported using the "no .htaccess (/index.php/)" operating mode of sh404SEF instead of trying to setup a rewriting engine in IIS. If you use this operating mode, you don"t need anything than just sh404SEF. However, again, IIS may have been configured in a way where even this mode cannot work, so please report to sh404SEF support forum, or to Joomla Forum for assistance in setting this up.

        1. Install ActiveScript

          After installing PHP, you should download the ActiveScript DLL (php4activescript.dll) and place it in the main PHP folder (e.g. C:\php).

          After having all the files needed, you must register the DLL on your system. To achieve this, open a Command Prompt window (located in the Start Menu). Then go to your PHP directory by typing something like cd C:\php. To register the DLL just type
          regsvr32 php4activescript.dll
        2. Install .NET framework 1.1

          To the best of my limited knowledge of IIS, this is required for web.config to work, so install it

        3. Create/Modify web.config

          NOTE: in the example below, Joomla/Mambo is installed in the virtual directory 'joomla'.

          Create C:\Inetpub\wwwroot\web.config and add the content below:
          <?xml version="1.0" encoding="utf-8"?>
                  <configuration>
                  	<system.web>
                  		<compilation defaultLanguage="PHP4Script" debug="true" />
                  		<customerrors mode="On" defaultRedirect="/joomla/index.php" />
                  	</system.web>
                  </configuration>
        4. Configure the Custom Errors

          NOTE: in the example below, Joomla/Mambo is installed in the virtual directory Joomla
          Using the Internet Services Manager, right-click the directory in which Joomla is installed.
          							Select properties >> Custom Error
          							set the 404 to URL:/mambo/index.php
          							set the 405 to URL:/mambo/index.php
    3. Uninstall
        1. Uninstall the component using the component unistaller in the usual way.
        2. For IIS, remove C:\Inetpub\wwwroot\web.config and
          the Custom Errors you created with the Internet Services Manager
  3. Useful Tips For Using sh404SEF

    • Configuration

      Using sh404SEF configuration is fairly straightforward for most of it. For more information on each item hover your mouse over the blue (i) images when you are in the configuration screen.

      When you save the configuration it will remove all your URL's from the database. If you have a high traffic site it may be wise to put it offline before saving sh404SEF config or purging the database. After doing that, you should use an online tool to build automatically a sitemap. The side effect of doing this is that this software will go through all of your site, and therefore all of your links, so they will be all automatically placed in the cache, thus speeding access for your next visitors.
      The caching system of sh404SEF is transparent,and will be rebuild automatically whenever required. Using the cache will vastly speed up the page load time, by dramatically reducing the number of database queries. Beware that URL caching uses up a lot of memory though. Its size can be limited using the appropriate parameter, and it can also be turned off completely. I estimate that 10 000 URLs eats up around 2 Mb, but that is per visitor to your site.

      Well, 10 000 URLs, that's already a sizable site!

      If you have a multi-lingual site, you can turn on or off URL translation. Normally, URL elements will be translated into the user language. However, it sometimes better not to translate, such as when using non-latin characters based languages. On such occasions, default site language will always be used/p>

      You may want to purge the 404 log before creating fresh urls.

    • Modifying URL's

      You can modify URL's to your liking. Go into sh404SEF Control Panel and click ' View/Edit SEF Urls'. Select the URL you wish to modify. If you click the check box labeled 'Save as Custom Redirect' it will place this URL into the 'Custom Redirect' area which you can navigate to from the sh404SEF Control Panel. When you click 'View/Edit Custom Redirects' you will see your URL in here now instead. These urls will not be removed when you save the config. You can modify these and save them as you wish.

      This is particularly useful if you are updating from an old site because any URL's that are no longer availble will be logged. You can view these URL's by clicking 'View/Edit 404 Logs' in the sh404SEF Control Panel. You can redirect visitors to the new page by selecting the URL you wish to modify and entering the new url.

    • Backing up your data

      You can import and export your URL to a text file, using the corresponding button on sh404SEF control panel.

      You can also import and export URL's from the Custom Redirect area. In this case, only the manually defined URL will stored in the export file.

      The import file is a simple text file, where URL are listed in rows. This is well suited to be imported into a spreadsheet software if some heavy text processing is to be done on redirections for instance

      If you want to import back your urls, go to the same screen, browse to the file and click the 'Import Custom URLS' button.

      Manually defined meta tags can be exported/imported in very much the same way. The export/import link is located at the top of the Meta Tags screen, accessed from the main control panel

Joomfish

Special note for Joomfish 1.7 users : it is usually more handy to use content elements Alias in URL, instead of Title. However, Aliase are not translated by Joomfish, as per default settings.
To have alias translated as well :


Locate and open administrator/components/com_joomfish/contentelements/content.xml
Find the line that looks like :
<field type="text" name="title_alias" translate="0">Title Alias</field>
and change it to
<field type="text" name="title_alias" translate="1">Title Alias</field>

Virtuemart

Special note for Virtuemart users: This component has only been tested with Virtuemart 1.0.10 (as of date of this release).

There is a bug in VM 1.0.10 with respect to Joomfish

see topic #26943 on VirtueMart forum.

File : /components/com_virtuemart/virtuemart_parser.php

line 40: insert code, so that result is as follow :

$option = mosGetParam( $_REQUEST, 'option' );

// shumisha fix for Joomfish, as per post on forum topic = 26943.0
global $mosConfig_lang;
$jFishLang = $mosConfig_lang;
// end of fix

if( !defined( '_VM_PARSER_LOADED' )) {

line 60 : insert code, so that result is as follow :

// the configuration file for the Shop
require_once( $mosConfig_absolute_path. "/administrator/components/com_virtuemart/virtuemart.cfg.php" );
// fix for Joomfish, as per post on forum topic = 26943.0
$mosConfig_lang = $jFishLang;
// end of fix
// The abstract language class
require_once( CLASSPATH."language.class.php" );

Joomla hack to allow SSL operation with Virtuemart (and others as well)


Find and open file : /includes/joomla.php
Locate the text : function sessionCookieName(). Replace the next lines to make it as follows:

function sessionCookieName() {
global $mainframe;

//return md5( 'site' . $mainframe->getCfg( 'live_site' ) );
// shumisha : found at http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html
return md5( 'site' . str_replace('http://', '', str_replace('https://', '', $mainframe->getCfg( 'live_site' ))) );
}


Copyright © 2004-2008 Yannick Gaultier
Distributed under the terms of the GNU General Public License.