使用 .htaccess 服务 index.html 或 index.php

Posted

技术标签:

【中文标题】使用 .htaccess 服务 index.html 或 index.php【英文标题】:using .htaccess to serve index.html or index.php 【发布时间】:2011-07-31 06:15:15 【问题描述】:

如果直接访问网站(无参数),我想使用.htaccess文件返回主页(index.html),如果是其他链接,我想使用index.php/subdirectories/..

示例:

my_site.com 显示 index.html

my_site.com/dir1/dir2/ 必须重定向到 index.php,参数为 dir1/dir2..

请帮助创建这个 .htaccess 文件

我在现有文件中有这个:

重写引擎开启

重写规则 ^(.*)(.html|.htm)$ index.php [L]

RewriteCond %REQUEST_FILENAME !-f

RewriteCond %REQUEST_FILENAME !-d

重写规则 ^(.*)/?$ index.php [L]

我想对进入站点时提供的 index.html 文件做例外处理

提前致谢

【问题讨论】:

【参考方案1】:

在您的 .htaccess 文件中尝试这些规则:

RewriteEngine on
Options +FollowSymlinks -MultiViews

# to redirect my.site.com to my.site.com/index.html
RewriteRule ^$ /index.html [R,L]

# to redirect /dir1/dir2 to index.php?url=dir1/dir2
RewriteCond %REQUEST_FILENAME !-d
RewriteCond  %QUERY_STRING !^url=
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?url=$1/$2 [R,L,QSA]

【讨论】:

谢谢,它在一台服务器上工作,但在另一台服务器上却不工作 mod_rewrite 已安装好并且在两台服务器上工作正常,我无法验证第一台服务器中的 apache(其中 .htaccess 工作正常),因为它不是专用服务器,但它可以正常工作.我只需要更正第二个 .htaccess(专用服务器)以允许执行 index.html if(mysite.com 或 mysite.com/index.html),并对所有其他文件和目录(mysite.com)执行 index.php /page1.html mysite.com/all_directories/../../, mysite.com/all_directories/index.html .....),请帮忙 yes RewriteRule ^$ /index.html [R,L] 在第二台计算机上不起作用,它提供来自 index.php 的内容 @aubhava,.htaccess 在第二台服务器上工作,但默认情况下它不提供 index.html 文件在 my_site.com 它执行 index.php 谢谢,是的,这是apache配置中的命令,但是在更正并重新启动apache后,它将my_site.com重定向到my_site.com/index.htmlindex.php并显示主页,my_site.com /index.html 显示 index.html 文件的真实内容。这是我的 .htaccess 的内容:RewriteEngine On RewriteRule ^/index.html$ index.html [C] RewriteRule ^(.*)(\.html|\.htm)$ index.php [L] RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)/?$ index.php [L] 【参考方案2】:

如果你只有 html,你也可以这样使用。

<IfModule mod_rewrite.c>
    RewriteEngine on
    Options +FollowSymlinks -MultiViews

    RewriteRule ^$ /index.html [R,L]

</IfModule>

【讨论】:

以上是关于使用 .htaccess 服务 index.html 或 index.php的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 用于具有 HTML5 模式的 AngularJS 应用程序的子文件夹

从 url 中删除 'index.html' 并使用一个 301 重定向添加 'www'

网页设计与制作常见问题

《精通android网络开发》--HTTP数据通信

强制浏览器重新加载 index.htm

如何设置网页默认index.htm而不是index.php?