views:

3044

answers:

4

Greetings,

I have just moved a website from IIS to Apache and am having a little trouble redirecting the index file without causing an infinite loop.

Both of these individually will cause a loop-

Redirect 301 /index.htm /index.php

Redirect 301 /index.htm http://www.foo.com/

Below is a copy of my current .htaccess. Can someone help me? I have a bunch of links pointed to http://www.foo.com/index.htm that I would like to 301 redirect to http://www.foo.com/

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla! Directory (just / for root)

# RewriteBase /

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|\.cfm|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section

Redirect 301 /a /administrator
+2  A: 

I guess you have your directory index set to index.html, and it occurs before index.php. Then your http://www.foo.com/ is interpreted as http://www.foo.com/index.html, and it is redirected to http://www.foo.com/ - hence the loop.

Here you got some info about redirects the diffrent ways.

kender
+3  A: 

Why are you doing this? Why not add index.php to your vhost/config as a valid index extension

DirectoryIndex index.html index.php

And then delete the HTML file>

or

DirectoryIndex index.php
Aiden Bell
A: 

I agree with Kender's comment about the redirect loop. Possibly the way round that is to have

DirectoryIndex notindex.html

along with your redirects, then put the actual front page in notindex.html. I'm not clear what's wrong with people using /index.html if that page really exists?

pjc50
Having both http://www.example.com/ and http://www.example.com/index.html going to the same page is what Google calls "duplicated content" and it *may* create a SEO problem.And, besides possible referencing issues, I find it ugly. One URL, one page.
bortzmeyer
A: 

I'm not allowed to add hyperlinks yet, as I'm a new user, so when I've typed "foo" just assume thats the entire URL...

To redirect foo/index.php to foo/ without the loop, use another rewrite rule:

RewriteRule index.php foo/ [R=301]

You might need to use /index.php depending on what your RewriteBase is set as (and how many directories you have an index.php in).

Dan