使index.html默认,但允许index.php被访问如果键入

我有我的.htaccess文件中的以下行:

DirectoryIndex index.html index.php 

每次我去index.php它需要我index.html。 是否可以同时允许,但是将index.html保留为访问www.domain.com的用户的默认值?

默认情况下,DirectoryIndex被设置为:

 DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml 

Apache将按顺序查找上述每个文件,并在访问者仅请求目录时查找第一个文件。 如果Web服务器在当前目录中找不到与DirectoryIndex指令中的名称匹配的文件,则会向浏览器显示一个目录列表,显示当前目录中的所有文件。

顺序应该是DirectoryIndex index.html index.php //默认是index.html

参考: 这里 。

如果你使用WordPress,现在有一个filter来解决这个问题:

 remove_filter('template_redirect', 'redirect_canonical'); 

(把这个放在你主题的functions.php

这告诉WordPress不要将index.phpredirect回根页面,而是要坐在原来的位置。 这样,可以将index.html分配为.htaccess的默认页面,并可以与index.php一起使用。

我同意@TheAlpha接受的答案,Apache从左到右读取DirectoryIndex目标文件,如果第一个文件存在,apche提供服务,如果没有,则下一个文件作为目录的索引。 所以如果你有以下指令:

 DirectoryIndex file1.html file2.html 

Apache将把/file.html作为索引,如果你想把/file2.html设置为索引,你将需要改变文件的顺序

 DirectoryIndex file2.html file1.html 

您也可以使用RewriteRule来设置索引文件

 RewriteEngine on RewriteRule ^$ /index.html [L] 

上面的RewriteRule会将你的主页改写为/index.html,重写会在内部发生,所以http://example.com/会显示你的index.html的内容。;

 RewriteEngine on RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L] 

将这两行放在.htaccess文件的顶部。 它会在您的.php页面的URL中显示.html。

 RewriteEngine on RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L] 

使用这个在.html页面的URL中显示.php。

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

它没有任何的手段? 你可能只需要添加这样的!

 <IfModule dir_module> DirectoryIndex index.php index.html index.htm </IfModule> 

在这里输入图像说明