#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.