What are the changes I should make to the .htaccess file to enable clean URLs? What actually are the steps to clean the URL of a site.

I have made the following changes in the /etc/apache2/sites-enabled/000-default file.

&lt;VirtualHost *:80&gt;

    DocumentRoot /var/www
    &lt;Directory /&gt;
        Options FollowSymLinks
        AllowOverride All
    &lt;/Directory&gt;
    &lt;Directory /var/www/&gt;
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    &lt;/Directory&gt;

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    &lt;Directory "/usr/lib/cgi-bin"&gt;
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/VirtualHost&gt;


What are the changes I need to do in a .htaccess file so that I could enable clean URLs?
You do not need to do any edits in the Drupal default .htaccess file to have Drupal 7 enable clean URLs.  Instead, navigate to Home » Administration » Configuration » Search and metadata (its the link named "Clean URLs" on the Admin's Configuration page, and press the button "Run the clean URL test".

If the test is successful, Drupal will make use of its default .htaccess to do the rewrites.  If the test fails, then you need to review your configuration.

Some suggestions:

Make sure that the Drupal default .htaccess is present in your webroot (/var/www).

Make sure that you've actually enabled mod_rewrite for Apache, e.g.:

 sudo a2enmod rewrite


You must also restart Apache after changing defaults, e.g.:

 sudo service apache2 restart


(The example shell commands above are for Ubuntu.  If you run a different dialect of GNU/Linux, you may need to use slightly different shell commands.)