Вопрос

Я видел, как это упоминалось во многих блогах по всей сети, но я считаю, что это следует обсудить здесь.Что мы можем сделать, если у нас есть фреймворк MVC (меня интересует ZEND) на PHP, но наш хост не предоставляет mod_rewrite?Есть ли какие-нибудь "короткие пути"?Можем ли мы каким-либо образом передать управление (чтобы между страницами могло происходить сопоставление)?Есть какие-нибудь идеи?Спасибо вам :-)

Это было полезно?

Решение

Фреймворк Zend должен работать без mod_rewrite.Если вы можете смириться с тем, что ваш URL: ы больше похожи на "/path/to/app/index.php/controller/action".Если у вас mod_rewrite вы могли бы покончить с "index.php" немного, но она должна работать тоже.

Все дело в настройке маршрутов для принятия части index.php.

Другие советы

ОК, мой вердикт :-) :Я успешно использовал zend без mod_rewrite, и это, как вы все сказали, site/index.php/controller/action.Я знал это еще до того, как опубликовал это сообщение.Я также обнаружил в сети метод, который "подталкивает" 404 страницы к index.php следовательно, то, что не является ресурсом (например.CSS, изображение и т.д.) Попадает туда, за одним исключением:ПУБЛИКУЙТЕ значения.Поэтому я решил, что в следующий раз, когда приложение будет размещено на определенном сервере, вежливо попросить mod_rewrite .Если администратор не может предоставить это, поговорите с моим начальником или, если это касается меня, смените провайдера.Вообще, иногда бывает обидно, что рынок PHP настолько сильно фрагментирован (php4, php5, php6, mod_rewrite, mod_auth, mod_whatever), но это уже другая история...

mod_rewrite практически необходим в современной среде хостинга .. но, к сожалению, не все поняли это сообщение.

Многие крупные php-программы (я думаю, magento, но большинство может справиться) имеют резервный режим с красивым URL-адресом, когда mod_rewrite недоступен.

URL-адреса в конечном итоге выглядят следующим образом www.site.com/index.php?load-this-page

Они, должно быть, используют какое-то волшебство, чтобы получить имя переменной из переменной $ _GET и использовать его в качестве указателя, какой модуль / функцию выполнять.

В соответствующей заметке я видел много перепутанных URL-адресов на новом сайте facebook, где используется #.Итак, ссылки выглядят так 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top