By default, Drupal passes path arguments to itself via its internally generated
URLs. This results in URLs that look like the following: "http://www.example.com/?q=node/83."
Notice the rather unsightly "?q=". Besides being unaesthetic and hard to read, it
also stops many search engines from indexing your site.
You can tell Drupal to use "clean URLs", eliminating the "?q=" in internal URLs.
Note that this works only for Apache servers which have mod_rewrite installed.
Warning. Enabling "Clean URLs" if your server is not properly configured can
make it difficult to navigate back to administration pages to undo your mistake.
If you find yourself in this situation, you can return to the administrative settings
page by typing in the URL in the 'non-clean' form: http://www.example.com/?q=admin/settings.
Enabling clean URLs involves three steps:
- Enable mod_rewrite for Apache. Please talk to your web host or consult the
Apache documentation for mod_rewrite to get more information on how to do this.
At a minimum, this will involve making sure that mod_rewrite is enabled for
your installation of Apache. It will have to be either compiled-in or made available
as a loadable module. In the latter case, make sure to tell Apache to load the
module by including
LoadModule rewrite_module modules/mod_rewrite.so
in your Apache configuration file.
- Edit your Apache configuration files for your site: the configuration information
may be found in httpd.conf, a virtual-host-specific file, or in an .htaccess
file in your Drupal installation directory. The main configuration option which
may need to be changed for your site is the RewriteBase. For example, if your
Apache DocumentRoot is /var/www/ (i.e., /var/www/index.html is what is displayed
when you point your browser at http://www.example.com/) and your Drupal installation
is installed in the subdirectory /var/www/mysite/, then the RewriteBase should
be set to /mysite.
- Finally, enable clean URLs on your administration/settings page. First,
see if you can go to the settings page on your site using clean URLs: type in
the URL http://www.example.com/admin/settings (where http://www.example.com/
is replaced by your hostname). If you get no errors and get to the same page
you would have gotten to by clicking on "administer" then "settings" , then
you know that you have setup the ReWriteRule rules successfully and can then
click the Yes checkbox for "Clean URLs:"
Note: The standard Drupal installation contains a sample .htaccess file which
supports clean URLs. It is easy to miss copying this file, because of the leading