Совпадение по URL с mod_rewrite только с очень специфическим шаблоном - PullRequest
1 голос
/ 19 мая 2011

У меня есть небольшая проблема, чтобы решить.У меня есть два приложения, работающие бок о бок (CodeIgniter и ExpressionEngine), и мне нужно направить определенные шаблоны URL в CI и все остальное в EE.Пока это в основном работает, но есть одна маленькая деталь.Вот код, который у меня сейчас есть:

# Rewrite requests for anything that's not a CI controller or physical file/folder to ExpressionEngine
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !(admin|cron|fst_reporting|playcatch|ppv|purchase|reporting|xml) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

# Route everything else to CodeIgniter
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /app/index.php/$1 [L]

Однако я также хочу отправить любые запросы на:

/training
/training/
/training/programme/something
/training/programme/something/

в EE в первом условном блоке, а затем принудительно запросить один конкретный URLшаблон

/training/something

для приложения CI (как см. во 2-м условном блоке).

Проблема, с которой я столкнулся, состоит в том, чтобы попытаться смешать вышеуказанные требования с моим существующим условным оператором, в идеале я хочусказать «Все, что НЕ равно моим контроллерам воспламенителя кода ИЛИ равно / training или / training / program / что-то».Между тем мне все еще нужно иметь возможность перенаправлять запросы на / training / что-то (где что-то - случайная строка символов) в приложение CI.

Есть идеи?:)

1 Ответ

2 голосов
/ 19 мая 2011

Возможно что-то вроде:

RewriteBase /
RewriteCond %{REQUEST_URI} ^/training(/)?(/programme/something)?(/)? [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !(admin|cron|fst_reporting|playcatch|ppv|purchase|reporting|xml) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

надеюсь, что это поможет.

...