2015-08-13 2 views
0

У меня есть приложение-устаревшее приложение с плохим кодом и очень непроверено. Это большой, и поэтому у нас нет рабочей силы для разработки новой версии за один шаг.Облечение устаревшего приложения в Framework

Поэтому я хотел бы обернуть его в приложение Symfony и написать новые части в Symfony. Затем старые классы будут перестраиваться поэтапно.

Я попытался включить переднюю панель legacys в приложение, если symfony запускает 404. Это работает хорошо. Но если я использую приложение сейчас, у меня есть ошибки с его старой системой маршрутизации и symfonys .htaccess.

Symfony .htaccess выглядит следующим образом

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ app.php [QSA,L] 

И наследие .htaccess выглядит следующим образом

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|png|gif|js|xml)$ [NC] 
RewriteRule ^(.*)$ index.php?_shop_=$1 [L,QSA] 

_shop_ Параметр используется для маршрутизации и т.д., и маршрутизатор старого приложения зависит в теме. Любая идея, как я могу объединить это вместе?

+0

Что вы подразумеваете под «если я использую приложение сейчас»? Кроме того, что вы имеете в виду с «У меня есть ошибки»? Какие ошибки? Как вы реорганизовали ваш код контроллеров? Как вы поймали ошибки, брошенные вашими устаревшими контроллерами? Пожалуйста, дайте подробные сведения. – MeuhMeuh

+0

«если я использую приложение сейчас» => если я вызываю URL-адрес, который не находится в маршрутах symfony Затем мой LegacyController вызывается и включает файл index.php моего старого приложения. «У меня есть ошибки» => Маршрутизация старого приложения не работает. Отображается страница индекса, но когда я посещаю/перечисляю и у меня нет симфонического маршрута, я получаю 404 не найден. Старая система маршрутизации зависит от параметра _shop_. – psren

ответ

0

Если вы хотите исправить это в .htaccess, вы должны определить допустимые маршруты.

Давайте предположим, что старые приложения имеет следующие возможные маршруты и перенаправляет:

/listing => index.php?shop=listing 
/detail => index.php?shop=detail 
/cart => index.php?shop=cart 

Тогда вы хотите, чтобы ваш .htaccess, чтобы выглядеть следующим образом

RewriteCond %{REQUEST_FILENAME} (listing|detail|cart) 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|png|gif|js|xml)$ [NC] 
RewriteRule ^(.*)$ index.php?_shop_=$1 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ app.php [QSA,L] 

Если эта линия слишком просто для ваши потребности, вы можете использовать тот факт, что в правилах перезаписи флаг OR имеет более высокий приоритет и пишет что-то вроде:

RewriteCond %{REQUEST_FILENAME} ^listing/something$ [OR] 
RewriteCond %{REQUEST_FILENAME} ^detail/[complexRegex] [OR] 
RewriteCond %{REQUEST_FILENAME} ^cart/... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|png|gif|js|xml)$ [NC] 
RewriteRule ^(.*)$ index.php?_shop_=$1 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ app.php [QSA,L] 

Если вам нужно что-то еще более совершенное, вам придется заняться этим на уровне приложения (т. в index.php или app.php), а не в .htaccess

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