Hi,

I installed my first drupal Website some days ago. Now i really need the clean URLs, but there seems to be a problem with the .htaccess file. I'm not quite sure what it is, because I've never used .htaccess before!

My drupal installation is in a directory called drupal, but my domain directly points to it! mod_rewrite is turned on! I also spoke with my Webhoster about that! The just told me to activate it with RewriteEngine on

So, here's my .htaccess

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
# <IfModule mod_php4.c>
#   php_value magic_quotes_gpc                0
#   php_value register_globals                0
#   php_value session.auto_start              0
#   php_value mbstring.http_input             pass
#   php_value mbstring.http_output            pass
#   php_value mbstring.encoding_translation   0
# </IfModule>

# PHP 4, Apache 2.
# <IfModule sapi_apache2.c>
#   php_value magic_quotes_gpc                0
#   php_value register_globals                0
#   php_value session.auto_start              0
#   php_value mbstring.http_input             pass
#   php_value mbstring.http_output            pass
#   php_value mbstring.encoding_translation   0
# </IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On
  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600
  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  # RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment and adapt the following:
  # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
  # RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
  # VirtualDocumentRoot and the rewrite rules are not working properly.
  # For example if your site is at http://example.com/drupal uncomment and
  # modify the following line:
  # RewriteBase /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
   RewriteBase /

  # Rewrite old-style URLs of the form 'node.php?id=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^id=([^&]+)$
  #RewriteRule node.php index.php?q=node/view/%1 [L]

  # Rewrite old-style URLs of the form 'module.php?mod=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^mod=([^&]+)$
  #RewriteRule module.php index.php?q=%1 [L]

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: .htaccess,v 1.81.2.4 2008/01/22 09:01:39 drumm Exp $

thx, for help ;-)

Comments

hagrin’s picture

Your .htaccess file looks ok. Are you getting an error when you run the Clean URLs test? If so, what is the error?

Just a few other questions -
1) You're not using IIS right?
2) Did you install Drupal into the root directory of your web server or in some folder (ex.: in a folder named "blog"?)
3) What webhost are you using?
_______________________________________________________________________________
http://www.hagrin.com - Just my little slice of the Interweb

ninom’s picture

1.) no, i'm using Apache/1.3.33
2.) nope, it's not in the root directory, its in a folder called drupal, but the domain is directly mapped to this folder!
3.) i'm using dynamic-net.ch as webhost

btw. it tells me the following error:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@merkur.ibone.ch and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
hagrin’s picture

Hmm not sure.

Usually when you get a HTTP 500 error like that for the Clean URL test, the culprit is almost always the RewriteBase statement. However, from your .htaccess file, it looks like you have it correctly for a Drupal install into the root folder -

RewriteBase /

That statement seems to be uncommented and changed correctly from /drupal to /. You can see others who had this problem and what they did -
http://drupal.org/node/75041

maybe try RewriteBase /drupal since you installed into a drupal folder? (I don't think so either, worth a try though maybe).
_______________________________________________________________________________
http://www.hagrin.com - Just my little slice of the Interweb

ninom’s picture

still doesn't work...

i don't get the error only when i try to use cleanurl, i can't even visit the page! if i want to access the page i have to delete the .htaccess file right now...

i tried to use / and /drupal, both of them didn't work...

drupal.naresh’s picture

Comment # RewriteBase /

I think, then it will work fine. (Coz', I feel this is creating problem as you have put your files in separate folder.)

ninom’s picture

It's still not working, I have no clue how to solve it..

gagarine’s picture

dynamic-net sucks... I have a client on this """webhoster""" :( but plane to change :)

php is not handled with php5 but php4! and change the handler create a server error :(.

Here my htaccess (ugly) on dynamic-net:

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
#Options -Indexes
#Options -MultiViews

# Follow symbolic links in this directory.
#Options +FollowSymLinks
# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
#<IfModule mod_php4.c>
#  php_value magic_quotes_gpc                0
#  php_value register_globals                0
#  php_value session.auto_start              0
#  php_value mbstring.http_input             pass
#  php_value mbstring.http_output            pass
#  php_value mbstring.encoding_translation   0
#</IfModule>

# PHP 4, Apache 2.
#<IfModule sapi_apache2.c>
#  php_value magic_quotes_gpc                0
#  php_value register_globals                0
#  php_value session.auto_start              0
#  php_value mbstring.http_input             pass
#  php_value mbstring.http_output            pass
#  php_value mbstring.encoding_translation   0
#</IfModule>

# PHP 5, Apache 1 and 2.*********
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On
  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600
  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # adapt and uncomment the following:
  RewriteCond %{HTTP_HOST} ^rodisa\.ch$ [NC]
  RewriteRule ^(.*)$ http://www.rodisa.ch/$1 [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} ^www\.rodisa\.ch$ [NC]
  # RewriteRule ^(.*)$ http://www.rodisa.ch/$1 [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory and
  # the rewrite rules are not working properly.
  RewriteBase /

  # Rewrite old-style URLs of the form 'node.php?id=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^id=([^&]+)$
  #RewriteRule node.php index.php?q=node/view/%1 [L]

  # Rewrite old-style URLs of the form 'module.php?mod=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^mod=([^&]+)$
  #RewriteRule module.php index.php?q=%1 [L]

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: .htaccess,v 1.81.2.2 2007/05/21 01:34:59 drumm Exp $

https://interface-network.com - Interface Network is an action and research technology governance agency.