301 redirect index.html in / or / index.php

Hi,

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

Both of them individually trigger 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 anybody help me? I have a bunch of links pointing to http://www.foo.com/index.htm that I would like to forward 301 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 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 
+6
apache mod-rewrite
source share
5 answers

Why are you doing it? 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 
+6
source share

I assume your directory index is set to index.html, and this happens 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 have information about redirecting different paths.

+3
source share

You will need to check the REQUEST_URI value as follows:

 RewriteCond %{REQUEST_URI} ^/index.htm$ # If REQUEST_URI == "/index.htm" RewriteRule (.*) / [R=301,L] # Then 301 redirect to "/" 
+1
source share

I agree with Kender's comment on the redirect loop. Perhaps round to have

DirectoryIndex notindex.html

along with your redirects, then put the actual main page in notindex.html. I don’t understand what happened to people using /index.html if this page really exists?

0
source share

I am not yet allowed to add hyperlinks, as I am a new user, so when I typed "foo", just assume that the entire URL ...

To redirect foo / index.php to foo / without loop, use a different rewrite rule:

 RewriteRule index.php foo/ [R=301] 

You may need to use /index.php, depending on how RewriteBase is installed (and how many directories you have index.php on).

0
source share

All Articles