2

Hi i am working on a project where i have two index files on root, one is index.php and other is index.html. I want o set default page to index.php and if it is not available then it should work for index.html. I have searched alot on internet and found the following solution for this.

DirectoryIndex index.php index.html

I am using this code on my site:

<Directory "/home/zhengyu/webroot/engine5g/rentown.com/">
          DirectoryIndex index.php index.html default.htm
</Directory>

I have also tried another way:

<Directory "/home/zhengyu/webroot/engine5g/rentown.com/">
          DirectoryIndex index.php index.html
          Options Indexes FollowSymLinks MultiViews
          AllowOverride None
          DirectoryIndex index.php index.html
          Order allow,deny
          allow from all
</Directory>

but none of them worked, it always makes index.php default, but when it is not available it doesn't load index.html.

and if I write index.html first and then index.php then it loads index.html, but doesn't load index.php if index.html not available.

In short, we can say that Preferences are not working.

Suresh Karia
  • 14,742
  • 18
  • 63
  • 83
Amrinder Singh
  • 4,699
  • 9
  • 38
  • 74

1 Answers1

1

You can specify multiple filenames, and the web server will search for each file until it finds a match. Consider this example directive:

Write this into your htaccess file on root:

DirectoryIndex index.php index.html

In this directive, when a visitor requests the directory name, the web server looks first for an index.php file. If it does not find an index.php file, it looks for an index.html file, and so on until it finds a match or runs out of files to search.

Or try this way

# Example A: Set index.html as an index page, then add index.php to that list as well.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex index.php
</Directory>

# Example B: This is identical to example A, except it's done with a single directive.
<Directory "/foo">
    DirectoryIndex index.html index.php
</Directory>

# Example C: To replace the list, you must explicitly reset it first:
# In this example, only index.php will remain as an index resource.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex disabled
    DirectoryIndex index.php
</Directory>

Source:

Suresh Karia
  • 14,742
  • 18
  • 63
  • 83
  • @Insomania I think you have problem with path `/home/zhengyu/webroot/engine5g/rentown.com/` ; try changing it. – Suresh Karia Dec 11 '15 at 06:12
  • 1
    ok here it is.. Options -MultiViews RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] DirectoryIndex index.php index.html – Amrinder Singh Dec 11 '15 at 06:14
  • @Insomania my advise is to try removing all other rules just to check.. only place this rule and try running it, if it works then try add other one by one. – Suresh Karia Dec 11 '15 at 06:19
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/97583/discussion-between-eirenaios-and-insomania). – Suresh Karia Dec 11 '15 at 06:21