Недавно я совершенствовал свои навыки в веб-программировании, чтобы следовать более разумному и удобному стилю кодирования MVC. Тем не менее, одна вещь, которую я использовал в своей структуре «создай свой собственный», — это гибкая динамическая маршрутизация, основанная на mod_rewrite. Похоже, это наболевшая проблема с такими вещами, как cakephp, zend и т. Д., И это вызывает у меня некоторые головные боли, пытаясь дублировать функциональность, которая у меня была.
В своем собственном контексте вы можете сделать что-то вроде следующего:
<custom htaccess rules before>
RewriteRule ^([A-Za-z0-9-/]+)$ index.php?q=$1 [NC,L]
который переписывает все совпадающие URL-адреса в произвольный скрипт, который обрабатывает URL-адрес, анализирует комбинации "/abc-123/abc-456/controller-value" и т. д. в любой список страниц или действий, функций и т. д., которые можно настроить из таблицы базы данных, жестко запрограммированные, бла-бла. Пользовательские правила до может проходить через согласованные запросы файлов, которые существуют для ресурсов на сервере, или настраивать административную маршрутизацию и т. д.
Однако, как только политика URL-адресов MVC срабатывает, чрезвычайно сложно переопределить это поведение чем-то, что скрывает логику приложения от внешнего мира. Я никогда не понимал, зачем кому-то показывать имена функций пользователю, и это моя настоящая проблема. Это кажется ненужным и слишком навязчивым с точки зрения удобства использования и безопасности.
Итак, вопрос в том, как подойти к переписанной, переводимой и удобной политике URL-адресов, сохраняя при этом прочную основу MVC для приложения?
Реквизиты:
- Логика приложения не раскрыта
- Переводимые URL (i18n)
- Динамичность и возможность добавлять, удалять, редактировать URL-адреса или страницы, не касаясь кода приложения.
Веселые времена! :D
Примеры URL:
/en/news/story-title
/pt/noticias/titulo
где URL-адреса извлекают локализованный контент на основе переданной языковой строки.