Newb: What's wrong with this .htaccess file please?

Discussion in 'Installation/Configuration' started by Slowhand, Jun 27, 2009.

  1. Slowhand

    Slowhand New Member

    Hi,

    I'm trying to get "clean URL's" in my Drupal install.

    If the .htaccess file in my "web" directory is empty, Drupal at least works. If the .htaccess file looks like this I get a 500 server error:
    Code:
    #
    # Apache/PHP/Drupal settings:
    #
    
    # Protect files and directories from prying eyes.
    <FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
      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
    
    # Make Drupal handle any 404 errors.
    ErrorDocument 404 /index.php
    
    # Force simple error message for requests for non-existent favicon.ico.
    <Files favicon.ico>
      # There is no end quote below, for compatibility with Apache 1.3.
      ErrorDocument 404 "The requested file favicon.ico was not found.
    </Files>
    
    # 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 URLs of the form 'x' to the form 'index.php?q=x'.
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !=/favicon.ico
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </IfModule>
    
    # $Id: .htaccess,v 1.90.2.3 2008/12/10 20:04:08 goba Exp $
    
    The above is the suggested .htaccess file which comes with Drupal. I have uncommented the RewriteBase / line towards the end of the document but things don't work either way.

    The log says:
    Options not allowed here, referer: http://www$

    I have restarted apache. I'm on Ubuntu 8.04LTS/Drupal 6.

    Grateful for any help as always :)

    Edit: Just found out that pasting that lot in to the Apache Directives field in ISPC3 isn't a good idea but I seem to have recovered it...
    Ah... But I forgot to delete the .htaccess file. Should I try that again?

    The logs are still showing
    Code:
    File does not exist: /var/www/www.mysite.com/web/admin, referer: http://www.mysit$
    
    when I access
    http://www.mysite.com/?q=admin/settings/clean-urls
    in Drupal... The page appears in the browser Ok...

    Slowhand
     
    Last edited: Jun 27, 2009
  2. till

    till Super Moderator

    Please post the exact error message that is in the error log of the website.
     
  3. Slowhand

    Slowhand New Member

    Till,

    I'm not getting anything more in the logs than is posted above:

    When the .htaccess file is as above I get
    Code:
    Options not allowed here, referer: http://www$
    
    And when it's empty I get
    Code:
    File does not exist: /var/www/www.mysite.com/web/admin, referer: http://www.mysit$
    
    Although the page looks Ok in my browser.

    Any help?

    S
     
  4. till

    till Super Moderator

    Comment out the lines:

    # Options -Indexes
    # Options +FollowSymLinks

    You can not set options in a .htaccess file for security reasons.
     
  5. Slowhand

    Slowhand New Member

    Till,

    I commented those lines out but still got a 500 server error.

    The logs then said:
    Code:
    [Sun Jun 28 10:56:15 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:15 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:18 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:18 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:25 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:25 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:32 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    [Sun Jun 28 10:56:32 2009] [alert] [client 192.168.0.6] /var/www/www.mysite.com/web/.htaccess: php_value not allowed here, referer: http://w$
    
    So now my .htaccess file looks like:
    Code:
    #
    # Apache/PHP/Drupal settings:
    #
    
    # Protect files and directories from prying eyes.
    <FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
      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
    
    # Make Drupal handle any 404 errors.
    ErrorDocument 404 /index.php
    
    # Force simple error message for requests for non-existent favicon.ico.
    <Files favicon.ico>
      # There is no end quote below, for compatibility with Apache 1.3.
      ErrorDocument 404 "The requested file favicon.ico was not found.
    </Files>
    
    # Set the default handler.
    DirectoryIndex index.php
    
    # Override PHP settings. More in sites/default/settings.php
    # but the following cannot be changed at runtime.
    
    # 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 URLs of the form 'x' to the form 'index.php?q=x'.
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !=/favicon.ico
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </IfModule>
    
    # $Id: .htaccess,v 1.90.2.3 2008/12/10 20:04:08 goba Exp $
    
    And I get my clean URL's! :)

    Does this setup look Ok to you Till?

    (Please read PM in a second...)

    S
     
  6. thetechguy

    thetechguy New Member

    Thanks Slowhand!!

    I was having the exact same problem as you.. I saved alot of troubleshooting thanks to you posting your success. I copied your last version of the .htaccess file and like magic all was good in my drupal world..

    thank you

    Jon
    The Tech Guy
     
  7. Slowhand

    Slowhand New Member

    Jon,

    It's only 9am here and you already made my day :)

    It get so much help from these forums that I'm delighted to be able to lend a hand in return.

    Slow.
     

Share This Page