Login with username, password and session length
Resend Activation Email | Forgot your Password?
Join IT Acumens Discussion Zone Free!

IT Acumens Guest Notice

Welcome Guest
Quick Links: Earn by Posting on Our Community | >> Recent Cheques | Register | How To Post/Reply
(After logging in, this box will disappear.)


Share this topic on FacebookShare this topic on MySpaceShare this topic on Del.icio.usShare this topic on DiggShare this topic on RedditShare this topic on StumbleUponShare this topic on TwitterShare this topic on TechnoratiShare this topic on MagnoliaShare this topic on GoogleShare this topic on Yahoo

Author [EN] [PL] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] Topic: A Typical Case - mod_rewrite: No More Endless Loops!  (Read 189 times)

Offline sukishan

  • Hero Member
  • *****
  • Posts: 2918
  • Acumen
    • View Profile
A Typical Case - mod_rewrite: No More Endless Loops!
« on: August 22, 2009, 07:18:15 PM »
A Typical Case
Lets start with an example.

We want to redirect all URIs to a PHP script. The redirection will be internal, so the client, for example, a browser, will not see that a redirection has occurred. To do this, we create in the document root an .htaccess file that contains these rules:

# Enable rewrite engine
Options +FollowSymLinks
RewriteEngine On

# Redirect internally all URIs to /index.php
RewriteRule .* /index.php [L]

However, this will not work itll freeze your Apache Web server. Why?

The problem is this line:

RewriteRule .* /index.php [L]

Simply put, that rule says Redirect all requests to /index.php.. That may sound like what we originally set out to achieve, but, in practice, we will not get the results we expect.

The following is what happens with a request for www.example.net/path/to/:

Phase A


The URI is /path/to/
RewriteRule will rewrite the URI from path/to/ to /index.php
An internal redirection will be made for /index.php
The internal redirection will be treated as a new request, so it will be parsed again (see phase b)

Phase B


The previous internal redirection, /index.php, will be processed again by the rewrite engine
RewriteRule will rewrite index.php to /index.php
An internal redirection will be made for /index.php

At this point the rewrite engine will run Phase B continuously and the Apache Web server will freeze.
A good beginning makes a good ending

IT Acumens Discussion Zone