59

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

DirectoryIndex index.html index.php

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

4

6 回答 6

90

默认情况下,DirectoryIndex 设置为:

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

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

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

参考: 这里

于 2012-04-10T03:23:24.697 回答
17

如果您使用的是 WordPress,现在有一个过滤器挂钩可以解决此问题:

remove_filter('template_redirect', 'redirect_canonical'); 

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

这告诉WordPress不要重定向index.php回根页面,而是坐在它所在的位置。这样,index.html可以指定为默认页面,.htaccess并且可以与index.php.

于 2015-06-17T19:57:08.383 回答
6

我同意@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 的内容。

于 2017-02-25T09:35:26.987 回答
4

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>

在此处输入图像描述

于 2016-10-01T12:56:42.747 回答
2

你好,

嗯,上面提到的方法我都试过了!它的工作是肯定的,但不完全是我想要的方式。我想通过我们的进一步操作将默认页面扩展重定向到主域。

这是我如何做到的......

# Accesible Index Page
<IfModule dir_module>
 DirectoryIndex index.php index.html
 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html|htm|php|php3|php5|shtml|phtml) [NC]
 RewriteRule ^index\.html|htm|php|php3|php5|shtml|phtml$ / [R=301,L]
</IfModule>

上面的代码简单地捕获任何 index.* 并将其重定向到主域。

谢谢

于 2019-03-13T23:17:13.677 回答
1
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。

于 2012-04-10T11:51:16.157 回答