Apache 重写目录索引

Posted

技术标签:

【中文标题】Apache 重写目录索引【英文标题】:Apache Rewrite Directory Index 【发布时间】:2015-02-25 03:40:26 【问题描述】:

基本上,如果用户代理字符串包含某些内容,那么我希望 DirectoryIndex 被忽略。这似乎根本不起作用。

【问题讨论】:

“DirectoryIndex 要被忽略”是什么意思?你显然不能忽视它,但你可以采取措施绕过它的作用。当用户代理包含“Kodi”时,您是否有您想要的行为示例? 对不起,我的意思是在查看上面的目录索引时,我只希望“/_h5ai/server/php/index.php”部分对非“Kodi”用户生效-代理字符串。 我只希望“/_h5ai/server/php/index.php”部分对“Kodi”用户代理字符串生效。 i>,您在 htaccess 文件中的条件完全相反。 嗯,我不确定是怎么回事。我知道我错了,但我看到它的方式是检查 Kodi 代理字符串,然后将“/_h5ai/server/php/index.php”请求重写为 / 该规则在选择目录索引之前应用,并且仅当目录不包含 index.html 或 index.php 时才会使用 h5ai 目录索引。您不能任意忽略 DirectoryIndex 指令的部分内容 【参考方案1】:

你可以试试这样的:

  DirectoryIndex index.html index.php

  RewriteEngine On
  RewriteCond %HTTP_USER_AGENT !Kodi [NC]
  RewriteCond %REQUEST_FILENAME -d
  RewriteRule ^ /_h5ai/server/php/index.php [L,QSA]

【讨论】:

以上是关于Apache 重写目录索引的主要内容,如果未能解决你的问题,请参考以下文章

apache mod_rewrite:如何根据其他目录中的文件存在为同一目录添加不同的重写规则?

Apache在子目录中重写htaccess

Apache Rewrite(mod_rewrite)无法重写,如果目录名与root下的另一个目录相同,例如Linux上的“lib”

禁止apache显示目录索引的常见方法

在 Apache2 中将目录索引设置为 .html 文件

thinkphp5 Apache / IIs环境下 URL重写