Forum Moderators: phranque

Message Too Old, No Replies

Apache: Request exceeded the limit of 10 internal redirects

mod_rewrite problem: RewriteRule ^(.*)$ /$1.php

         

guarriman

9:59 am on Jan 26, 2005 (gmt 0)

10+ Year Member



Hi

I've just installed Apache 2.0.52, with:

./configure --prefix=/usr/local/httpd --enable-so --enable-modules=all

My httpd.conf includes:
-----------------------------------
<VirtualHost mydomain>
ServerAdmin f...@mydomain
DocumentRoot "/home/mydomain"
ServerName mydomain
ErrorLog logs/mydomain-error_log
CustomLog logs/mydomain-access_log common
DirectoryIndex index.php index.html index.html.var
<Directory "/home/mydomain">
php_flag allow_url_fopen 1
php_flag magic_quotes_gpc 0
RewriteEngine on
RewriteOptions MaxRedirects=15
RewriteCond %{REQUEST_FILENAME}!-d
RewriteCond %{REQUEST_FILENAME}!-f
RewriteRule ^(.*)$ /$1.php
</Directory>
</VirtualHost>
---------------------------------
(I try to make Apache serve 'foo' as 'foo.php')

But when accessing 'http://mydomain/foo', I get no webpage,
but this error log:
----------------------------------
[Mon Jan 24 10:47:59 2005] [debug] mod_rewrite.c(1778): [client
192.168.2.101] mod_rewrite's internal redirect status: 10/15.
[Mon Jan 24 10:47:59 2005] [error] [client 192.168.2.101] Request
exceeded the limit of 10 internal redirects due to probable
configuration error. Use 'LimitInternalRecursion' to increase the limit
if necessary. Use 'LogLevel debug' to get a backtrace.
[Mon Jan 24 10:47:59 2005] [debug] core.c(2748): [client 192.168.2.101]
r->uri = /favicon.ico.php.php.php.php.php.php.php.php.php.php
[Mon Jan 24 10:47:59 2005] [debug] core.c(2754): [client 192.168.2.101]
redirected from r->uri =
/favicon.ico.php.php.php.php.php.php.php.php.php
[Mon Jan 24 10:47:59 2005] [debug] core.c(2754): [client 192.168.2.101]
redirected from r->uri = /favicon.ico.php.php.php.php.php.php.php.php
[Mon Jan 24 10:47:59 2005] [debug] core.c(2754): [client 192.168.2.101]
redirected from r->uri = /favicon.ico.php.php.php.php.php.php.php
--------------------------------

If I remove the line 'RewriteOptions MaxRedirects=15', I get
a very similar error:
----------------------------
[Wed Jan 24 10:31:29 2005] [debug] mod_rewrite.c(1778): [client 192.168.2.101] mod_rewrite's internal redirect status: 10/10.
[Wed Jan 24 10:31:29 2005] [error] [client 192.168.2.101] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.
[Wed Jan 24 10:31:29 2005] [debug] mod_rewrite.c(1778): [client 192.168.2.101] mod_rewrite's internal redirect status: 0/10.
-------------------------------

What am I doing wrong? Thank you very much.

jdMorgan

11:33 pm on Jan 26, 2005 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



guarriman,

Welcome to WebmasterWorld!

It looks like your tests for "exists as file" and "exists as directory" are failing. As a result, any request is repeatedly rewritten by appending ".php" until the redirection limit is reached.

This is tricky, because I can't be sure of the full path to your files, but as an example of what you may need to change to get this working, try something like this:


RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond $1 !\.php$
RewriteRule ^(.*)$ /$1.php [L]

It's important to make sure the full path to the file being tested is correct, and the RewriteCond I added justs acts as "insurance".

Jim