Understand and Enable Search Engine Friendly (SEF) in Joomla

Search Engine Friendly(SEF) also known as human readable URL. With the most famous Web Service like Nginx, Apache and IIS7, they do support URL rewrite or mod_rewrite to rewrite the human readable URL such as www.domain.com/about instead of www.domain.com/about.html.

With Joomla 1.5 and above, Joomla come with 3 option from your Global Configuration.
–  Search Engine Friendly URLs – With this option enabled, SEF will enable and your URL will look like, http://www.example.com/index.php/the-­news/1-­latest­-news/1­-welcome­-to­-joomla.
– Use Apache mod_rewrite/URL rewriting – With this option enabled, mod_rewrite will eliminate inde.php and your URL will look like, http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla
– Add suffix to URLs – With this option enabled, your URL will added .html at the end of the URL and it will look like http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla.html

Nginx
To enable SEF with Nginx, add the following line to your (vhost)nginx.conf file.

# Support Clean (aka Search Engine Friendly) URLs</tt>
        location / {
                try_files $uri $uri/ /index.php?q=$request_uri;
        }

Apache
To enable SEF with Apache server, you may easily rename the htaccess.txt to .htaccess file. This step is not necessary as you may get your .htaccess file generated if it is install in  own folder.

IIS 7
With IIS 7, you may choose to use GUI or directly add it from web.config file.

With GUI interface, you may add the following option from the URL rewrite option.

Pattern field: ^([^/]+)/?$
Ignore case ON
Action type: Rewrite
Rewrite URL: index.php/

 Otherwise, you may add the following line to your web.config file.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Common Exploit Blocking" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" />
                        <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" />
                        <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" />
                        <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" />
                        <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" />
                    </conditions>
                    <action type="Redirect" url="index.php" appendQueryString="false" redirectType="SeeOther" />
                </rule>
                <rule name="Joomla Search Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^/search.php" ignoreCase="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php?option=com_content&amp;view=article&amp;id=4" />
                </rule>
                <rule name="Joomla Main Rewrite Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="(/[^.]*|\.(php|html?|feed|pdf|raw))$" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/" />
                </rule>
            </rules>
        </rewrite>
        <caching>
            <profiles>
                <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
            </profiles>
        </caching>
    </system.webServer>
</configuration>

SSL: Do I need to create a new CSR to renew my ssl certificate?

Many user might ask do I need to regenerate the CSR key when I need to renew my SSL certificate.

In many Apache server do allow you to install your SSL with your previous CSR key unless  you have change the SSL information.

However, the following server is needed to regenerate the CSR key when you renew it,

– Microsoft IIS Server
– Java based server
– Tomcat based server

Apache: service httpd does not support chkconfig

As you know, when you installed your Apache service to your Centos/Redhat server manually (make & make install but not yum) and could like to run the service automatically, you should copy the apachectl from the Apache bin folder to /etc/init.d/ folder as named httpd.

Then you might want to set the chkconfig and facing the error as below,

service httpd does not support chkconfig

To fix this issue, you may simply add the following line to your file at /etc/init.d/httpd.

#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/logs/httpd.pid
# config: /usr/local/apache/conf/httpd.conf

Then you may chkconfig again,

chkconfig --level 235 httpd on

And now restart your httpd service.

Linux: Generate SSL CSR Key with Apache Linux

Oops.. It is been a while MGe disappeared and here I come back again after long holiday for blogging. 🙂

This article used to guide you to create the CSR(Certificate Signing Request) from your Apache machine.

Web Server: Linux
Web Service: Apache

1. First of all, you will need to create a key pair.

openssl genrsa -out www.yourdomain-example.com.key 2048

– Replace the mickgenie.com with your domain name.
– The number of 2048 used to determined the bit-length of your certificate, where you are advise to have 2048 and above.

2. You will be asking for the pass phrase and you may enter any strong password.

3.  Next, you will need to generate the CSR.

openssl req -new -key www.mickgenie.com.key -out www.mickgenie.com.csr

Next, you will be asking for Country Name, State or Province, Locality or City, Company, Organizational Unit, Common Name and Email Address.

4. Get your CSR and purchase the SSL from SSL provider.

Howto: Enable FastCGI from Linux

To enable FastCGI from your Apache server, you may follow this article.

1. Copy the php.ini file to your cgi-bin folder.
2. Create a file named php.fcgi in the cgi-bin folder.
3. Insert the following script,

#!/bin/sh
export PHP_FCGI_CHILDREN=1
export PHP_FCGI_MAX_REQUESTS=10
exec /usr/local/cpanel/cgi-sys/php5

4. Change the php.fcgi permission to 755.
5. Create/Edit the .htaccess file and insert the following script.

AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php.fcgi

Import failed for WordPress XML file?

This will happen if you used WordPress Export and Import tool for WordPress to WordPress migration, you might/might not faced this problem when you migrated your WordPress from 1 server to another server but this is good for your knowledge.

Eg.

I would like to migrate my WordPress blog from wordpress.com to my domain such as mickgenie.com.

Step:
1. I will go to wordpress.com administrator and export the data file to XML format to my local PC.
2. I will go to mickgenie.com administrator to restore it.

BUT,
I got “timed out” where the XML is not fully restore.

Solution suggested by Mick Genie:
Continue reading Import failed for WordPress XML file?