Могу ли я положиться на mod_rewrite? - PullRequest
5 голосов
/ 04 марта 2010

Я создаю небольшой PHP-фреймворк для веб-сайтов, которые я создаю, и хотел знать, могу ли я рассчитывать на то, что mod_rewrite доступен для большинства хостеров.используй это?Уже есть много хороших моментов (одна точка входа, «красивые», читаемые URL-адреса)

Где это не доступно?включить альтернативу в структуру, если mod_rewrite недоступен на этом хостере?

Ответы [ 6 ]

5 голосов
/ 04 марта 2010

mod_rewrite обычно доступен. Если он недоступен на серверах хостов, удалите их.

3 голосов
/ 04 марта 2010

Модуль MOD_REWRITE обычно доступен на большинстве хостов Apache в эти дни. Тем не менее, это не так сложно обойти его отсутствие, и тем самым вы гарантируете, что люди застряли на / с хостом / ИТ-персоналом, которые его отключили, или хост / ИТ-персонал, работающий с IIS и т. Д. *

Большинство новых фреймворков или приложений, созданных сегодня, используют mod_rewrite для перехвата всех URL-запросов через один PHP-файл фронтальной загрузки (называемый Bootstrapping, Frontloading pattern и т. Д.). Часть URL, которая не является именем домена, анализируется в некотором объекте, и этот объект используется всякий раз, когда вам необходим доступ к URL.

Когда MOD_REWRITE недоступен, URL-адреса в виде

http://example.com/index.php/foo/baz/bar

используются вместо. Запрос на вышеуказанный URL обрабатывается файлом index.php. Затем вы можете проанализировать одну из серверных переменных, например

$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc.

в некоторый объект (тот же объект, который вы использовали бы, если бы у вас был mod_rewrite) и использовал этот объект всякий раз, когда вам требовался доступ к информации URL.

В любом случае, остальная часть вашего фреймворка / приложения просто получает доступ к объекту, и не нужно беспокоиться о том, как информация попала туда.

Дополнительное чтение

2 голосов
/ 04 марта 2010

Если вы разрабатываете общедоступное приложение, вы должны учитывать, что mod_rewrite может быть недоступен, и поддерживать альтернативу. AcceptPathInfo - это один.

0 голосов
/ 06 ноября 2010

Я думаю, что любое приличное приложение должно использовать mod_rewrite, и большинство веб-хостов предлагают это. Если они не предлагают, отстань от них.

Кроме того, не только mod_rewrite - это хороший вариант для использования, но и другие настройки php, такие как php_value max_execution_time и т. Д., Чтобы убедиться, что вы настраиваете свою среду в соответствии с целями своего приложения.

0 голосов
/ 04 марта 2010

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

0 голосов
/ 04 марта 2010

mod_rewrite только для apache, поэтому если вам нужно работать на IIS или что-то еще, у вас будут проблемы, но в PHP вы также можете использовать это:

</p> <pre><code>private function getURI() { $uri = ""; if (isset($_SERVER['PATH_INFO'])) $uri = getValueFrom($_SERVER, 'PATH_INFO', @getenv('PATH_INFO')); elseif (isset($_SERVER['ORIG_PATH_INFO'])) $uri = getValueFrom($_SERVER, 'ORIG_PATH_INFO', @getenv('ORIG_PATH_INFO')); else $uri = ""; $scriptname = basename($_SERVER['SCRIPT_FILENAME']); if (strpos($uri, $scriptname) > -1) $uri = substr($uri, strpos($uri, $scriptname) + strlen($scriptname), strlen($uri)); return $uri; }

Изменение URL-адресов является хорошей практикой, на самом деле широко используется в Интернете и является рекомендацией SEO, поскольку лучше иметь следующее:

domain.com / ABOUTUS

к этому

domain.com / index.php? Приложение = основной и действие = показать & ID = 1

...