Условный DirectoryIndex

#php #.htaccess #content-management-system #directoryindex

#php #.htaccess #content-management-system #directoryindex

Вопрос:

Я установил два CMS в один и тот же каталог. Один из CMS позволяет index.php файл, который нужно переименовать в index2.php , другой — нет. В идеале я хотел бы настроить условное правило в файле .htaccess, которое:

  • Использует index.php в качестве индекса каталога по умолчанию
  • Если есть ошибка 404, установите DirectoryIndex в index2.php

Кто-нибудь знает, возможно ли / как это возможно?

Комментарии:

1. Хороший вопрос, я не уверен, возможно ли это с .htaccess . Вы можете отправить вложенный запрос к первой CMS, и если это вернет заголовок состояния 404, index2.php применяется второе правило.

2. Это лучшая настройка для вашего приложения? Как насчет того, чтобы позволить каждой CMS жить в своем собственном подкаталоге … или, что еще лучше, в своем собственном виртуальном хосте?

Ответ №1:

(404 = Файл не найден), так что вы на самом деле ищете метод, который позволяет просматривать список возможных индексных файлов)
Добавьте следующую строку в свой .htaccess файл:

 DirectoryIndex index.php index2.php
  

Когда index.php он существует, он используется. В противном случае index2.php используется.
Когда index.php и index2.php существует, index.php используется, потому что он появился первым.

См. Также: Документы Apache> Директива DirectoryIndex.

Комментарии:

1. Я не думаю, что OP просит об этом. Я думаю, что сначала должна включиться CMS 1, и если она вернет 404 (файл не найден), должна включиться CMS 2. Но обе CMS используют псевдонимирование URL-адресов.

2. @hakre Условие задается в вопросе. "Use index.php, if 404 then use index2.php" , что равно: Use index.php if exist, else index2.php что переводится в DirectoryIndex index.php index2.php .

3. Хм, заголовок состояния возврата 404 может быть возвращен index.php ( «использовать index.php » ), и если это так ( «если 404, то используйте index2.php » ). DirectoryIndex не проверяет код ответа подзапроса AFAIK, он просто выполняет индексный скрипт, когда файл существует, независимо от того, какой статус ответа вернет этот скрипт.

4. Спасибо за ответы, Роб — метод DirectoryIndex почти работает, однако обе CMS (Magento и WordPress) имеют псевдоним url, как говорит хакре, что приводит к появлению страниц Magento, а страницы WordPress приводят к появлению страницы Magento 404.