Getting a 500 error

New to mod_rewrite? This is a good place to start.

Getting a 500 error

Postby comfixit » Thu Jul 23, 2009 7:12 pm

I am on a shared host. I have an htaccess file that comes default with Drupal installed in my root folder.

Something in that htaccess file is causing the subfolders to exceed the maximum number of re-directions. The subfolders contain plain static websites (not based on Drupal).

Below is the full htaccess file in the root.

One of the many subdomains that will now work when this Drupal .htaccess file is active is:

/adivorceattorney/index.html

My guess is that all requests are being intercepted. My question is if there is a way to override that .htaccess file in the local folders and if so what would I want to put in that .htaccess file in the subfolders?

Here is the .htaccess file included by Default with Drupal that causes the problems in the subfolders when enabled.

----------------------------------

#
# 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 $
comfixit
 
Posts: 2
Joined: Thu Jul 23, 2009 6:57 pm

Postby richardk » Fri Jul 24, 2009 12:50 pm

Try replacing
Code: Select all
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

with
Code: Select all
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{DOCUMENT_ROOT}/$1/ !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/]+)(/.*)?$ /index.php?q=$0 [QSA,L]
richardk
 
Posts: 8800
Joined: Wed Dec 21, 2005 7:50 am

Postby comfixit » Fri Jul 24, 2009 3:05 pm

Thank you for the reply.

I gave it a try but still got the same error when I replaced it with the one you had me try.

Given that the directory is set up so the mod_rewrite is in the .htaccess file in the public_html directory and the sites that are failing are in the sub directories like public_html/site1

Is there a way to eliminate the effects of the rewrites on the subdirectories. Or perhaps a way in the .htaccess file I could place something that says don't follow the rewrite rules if the url contains site1.com?
comfixit
 
Posts: 2
Joined: Thu Jul 23, 2009 6:57 pm

Postby richardk » Sat Jul 25, 2009 2:28 pm

Just so we're sure, when you remove the mod_rewrite (Rewrite* lines) from the /public_html/.htaccess file the problem does not happen, correct?

Is there a way to eliminate the effects of the rewrites on the subdirectories.

You could try
Code: Select all
RewriteEngine Off

in /site1/.htaccess.

Or perhaps a way in the .htaccess file I could place something that says don't follow the rewrite rules if the url contains site1.com?

You could try adding
Code: Select all
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com$ [NC]
RewriteRule .* - [L]

after
Code: Select all
RewriteEngine on

in /public_html/.htaccess.
richardk
 
Posts: 8800
Joined: Wed Dec 21, 2005 7:50 am


Return to Beginner's Corner

Who is online

Users browsing this forum: No registered users and 39 guests

cron