Предположим следующую структуру:Htaccess для нескольких CMSes в вложенных каталогов
/main-cms/index.php
/main-cms/a-thing.php
/main-cms/foo/index.php
/main-cms/bar/another-cms/index.php
/main-cms/bar/another-cms/another-thing.php
Я хочу иметь несуществующий URL, такие как https://example.com/main-cms/hello
быть обработаны с помощью файла index.php главного CMS и фактические файлы обычно служили, таких как https://example.com/main-cms/a-thing.php
и https://example.com/main-cms/foo/
.
Следующая .htaccess работает отлично для этого:
RewriteBase /main-cms/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
У меня также есть другой CMS в суб-суб-каталог основной, который имеет свой собственный файл .htaccess и правила, которые позволяют, что другие CMS для управления собственной частью сайта. Запросы на https://example.com/main-cms/bar/another-cms/*
обрабатываются этим другим CMS .htaccess без основного вмешательства.
Теперь, как получить запросы к https://example.com/main-cms/bar/
и https://example.com/main-cms/bar/baz
, обрабатывается основной CMS .htaccess (что указывает на /main-cms/index.php
)? Я получаю код 404 с указанным выше кодом, потому что существует каталог bar
, но нет индексной страницы в /main-cms/bar/
. Удаление !-d
условного прерывает запросы до /main-cms/foo/
.
Можно ли это решить только с помощью третьего .htaccess в каталоге /main-cms/bar/
для ручной перенаправления или есть какая-то маска состояния/правила, которая будет работать в основном .htaccess?
Мой пример - упрощение проблемы, которая переносит массивный сайт с несколькими приложениями самообслуживания (различные нетрадиционные CMS) в новую веб-CMS для обработки большей части традиционного статического контента, который находится среди других CMS. Перемещение каталогов будет нарушать 20 + годы установленных связей. Хотя это, безусловно, возможно, я предпочел бы поддерживать существующие структуры без огромной сети переадресаций. –