使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.php
redirect回根页面,而是要坐在原来的位置。 这样,可以将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>