2017-02-02 3 views
0

Предположим следующую структуру: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?

ответ

0

Похоже, что вам не нужен каталог bar. Переместите вложенную CMS на уровень. Вы должны будете игнорировать запросы к вложенному CMS в основной, так данное правило первое:

RewriteCond ^another-cms/ - [L] 

В вложенной один, установите

RewriteBase /main-cms/another-cms/ 

Что в веб-корень? Вот где я ожидаю, что ваша главная CMS будет. Если он пуст, как bar, сделайте то же самое с ним.

+0

Мой пример - упрощение проблемы, которая переносит массивный сайт с несколькими приложениями самообслуживания (различные нетрадиционные CMS) в новую веб-CMS для обработки большей части традиционного статического контента, который находится среди других CMS. Перемещение каталогов будет нарушать 20 + годы установленных связей. Хотя это, безусловно, возможно, я предпочел бы поддерживать существующие структуры без огромной сети переадресаций. –

Смежные вопросы