Я видел, как это упоминалось во многих блогах по сети, но я считаю, что это обсуждается здесь. Что мы можем сделать, когда у нас есть MVC-инфраструктура (меня интересует ZEND) на PHP, но наш хост не предоставляет mod_rewrite? Есть ли «короткие сокращения»? Можем ли мы каким-либо образом передать управление (чтобы между страницами могло отображаться сопоставление)? Есть идеи? Спасибо 🙂
Zend Framework должен работать без mod_rewrite
. Если вы можете проживать с вашим URL-адресом: s больше похоже на «/path/to/app/index.php/controller/action». Если у вас есть mod_rewrite, вы можете покончить с битом index.php, но он тоже должен работать.
Все дело в настройке маршрутов для приема части index.php.
OK мой вердикт :-): Я успешно использовал zend без mod_rewrite, и это так, как вы все сказали site / index.php / controller / action. Я знал это, прежде чем публиковать это. Я также обнаружил в сети метод, который «подталкивает» 404 страницы к index.php, поэтому туда не попадает ресурс (например, CSS, изображение и т. Д.), За одним исключением: значения POST. Поэтому я решил, что в следующий раз приложение должно быть сделано на конкретном сервере, чтобы вежливо спросить mod_rewrite. Если администратор не может предоставить его, поговорите с моим боссом или, если он для меня, переключитесь на поставщика. Как правило, иногда стыдно, что рынок PHP настолько фрагментирован (php4, php5, php6, mod_rewrite, mod_auth, mod_whatever), но это еще одна история …
mod_rewrite практически необходим в сегодняшней среде хостинга … но, к сожалению, не все получили сообщение.
Множество больших программ php (я думаю, пурпурный, но большинство из них справится) имеют режим обратного возврата довольно-то, когда mod_rewrite недоступен.
URL-адреса в конечном итоге выглядят как http://www.site.com/index.php?load-this-page
Они должны запускать магию, чтобы захватить имя переменной из переменной $ _GET и использовать ее в качестве селектора для того, какой модуль / функция должна выполняться.
В связанной заметке я видел множество перепутанных URL-адресов на новом сайте facebook, где он использует #. Таким образом, ссылки выглядят как http://www.new.facebook.com/home.php#/inbox/. Очевидно, что мы не хотим этого видеть, но это говорит о том, что они, вероятно, разбирают переменную $ _SERVER ['REQUEST_URI'].
Если вы можете найти способ, отличный от mod_rewrite, для перенаправления всех запросов на index.php (или где бы ни был сценарий инициализации), вы можете, как упоминалось выше, использовать «REQUEST_URI», чтобы захватить часть адреса после домена, а затем проанализировать это, как вам нравится, и сделать запрос делать то, что вы хотите. Именно так WordPress делает это (предоставляется, с mod_rewrite). Пока вы можете перенаправлять запросы на свою индексную страницу, сохраняя тот же URI, вы можете делать все, что нужно для обработки запроса.
Правила перезаписи Drupal перевести
http://example.com/path/goes/here
в
http://example.com/index.php?q=path/goes/here
… и имеет логику, чтобы решить, какой вкус URL-адресов для генерации. Если вы можете жить с уродливыми URL-адресами, это позволит вам сохранить всю логику одного переднего контроллера на месте, не полагаясь на переписывание URL-адресов.