Обработка запросов 3xx / 4xx в PHP MVC Framework? - PullRequest
0 голосов
/ 21 сентября 2009

Если, скажем, вы используете популярный:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L,QSA]

И вы пытаетесь сделать так, чтобы ваш веб-фреймворк mvc обрабатывал 404, если вы не нашли соответствующее представление для указанного URI, вы бы просто вручную отправили 404 http-заголовка в самом приложении php, верно? Это сделано в Zend / Kohana и других фреймворках?

Еще один вопрос, допустим, вы переписали весь сайт и хотите настроить 301-е. Сделаете ли вы это в месте, где вы настраиваете свои маршруты (стиль регулярных выражений, например, urls.py в Django) или в директиве Virtualhost?

В принципе, должен ли я когда-либо изменять RewriteRules в VirtualHost, если моя веб-платформа обрабатывает маршрутизацию?

1 Ответ

1 голос
/ 21 сентября 2009

На 404, вообще говоря, да.

Что касается постоянного перенаправления, я полагаю, это зависит от контекста. Если бы мое решение по маршрутизации поддержало это в любой разумной манере, я бы, вероятно, пошел на это, если не ожидал столкнуться с большими проблемами масштабирования.

То есть, если бы я работал с большим трафиком и имел много статического содержимого для обслуживания (но не настолько массового, чтобы использовать в качестве веб-сервера все, кроме apache), я мог бы запустить php под fcgi, чтобы сохранить apache процессы тонкие (и используют лучший MPM, чем prefork). В таком мире я, вероятно, в конечном итоге закоротил URL-адреса, и веб-сервер сделал бы перенаправление.

Но даже в таких случаях нет причин не делать это вначале в своей структуре маршрутизации.

Таким образом, если запрос проскальзывает, все равно работает, даже если он замедляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...