条件目录索引
Posted
技术标签:
【中文标题】条件目录索引【英文标题】:Conditional DirectoryIndex 【发布时间】:2011-12-03 14:04:01 【问题描述】:我在同一个目录中安装了两个 CMS。其中一个 CMS 允许将 index.php 文件重命名为 index2.php,而另一个则不允许。理想情况下,我想在 .htaccess 文件中设置一个条件规则:
使用 index.php 作为默认 DirectoryIndex 如果出现 404 错误,则将 DirectoryIndex 设置为 index2.php有谁知道这是否/如何可能?
【问题讨论】:
好问题,我不确定.htaccess
是否可行。您可以向第一个 CMS 发出子请求,如果返回 404 状态标头,则适用于 index2.php
的第二条规则。
这是最适合您的应用程序的设置吗?让每个 CMS 都存在于自己的子目录中怎么样……或者更好的是,自己的虚拟主机?
【参考方案1】:
(404 = 未找到文件),因此您实际上是在寻找一种允许浏览可能的索引文件列表的方法)
将以下行添加到您的 .htaccess
文件中:
DirectoryIndex index.php index2.php
当index.php
存在时,它会被使用。否则,使用index2.php
。
当index.php
和index2.php
存在时,使用index.php
,因为它首先出现。
另请参阅:Apache Docs > DirectoryIndex directive。
【讨论】:
我不认为 OP 要求这样做。我认为 CMS 1 应该首先启动,如果它返回 404(找不到文件),CMS 2 应该启动。但是两个 CMS 都使用 url-aliasing。 @hakre 问题中给出了条件。"Use index.php, if 404 then use index2.php"
,等于:Use index.php if exist, else index2.php
,转换为DirectoryIndex index.php index2.php
。
嗯,index.php可以返回一个404返回状态头("使用index.php"),如果是的话("if 404 然后使用 index2.php")。 DirectoryIndex
不检查子请求 AFAIK 的响应代码,它只是在文件存在时执行索引脚本,而不管该脚本将返回哪种响应状态。
感谢您的回复,Rob - DirectoryIndex 方法几乎可以工作,但是正如 hakre 所说,两个 CMS(Magento 和 WordPress)都有 url 别名,这会导致 Magento 页面出现并且 WordPress 页面导致Magento 404 页面。以上是关于条件目录索引的主要内容,如果未能解决你的问题,请参考以下文章