PDA

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


Slowhand
27th June 2009, 18:41
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:

#
# 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|a ll-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

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

till
28th June 2009, 11:58
Please post the exact error message that is in the error log of the website.

Slowhand
28th June 2009, 12:25
Please post the exact error message that is in the error log of the website.

Till,

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

When the .htaccess file is as above I get

Options not allowed here, referer: http://www$


And when it's empty I get

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

till
28th June 2009, 12:33
Comment out the lines:

# Options -Indexes
# Options +FollowSymLinks

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

Slowhand
28th June 2009, 13:04
Comment out the lines:

# Options -Indexes
# Options +FollowSymLinks

You can not set options in a .htaccess file for security reasons.
Till,

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

The logs then said:

[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:

#
# 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|a ll-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

thetechguy
10th July 2009, 00:48
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

Slowhand
10th July 2009, 11:01
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

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.