Я создаю маленькую платформу PHP для веб-сайтов, которые я создаю и требуемый, чтобы знать, могу ли я полагаться на mod_rewrite, являющийся availabe на большей части hosters.
ist является даже хорошей идеей с помощью него? Уже существует много положительных сторон (одна точка входа, "красивые", читаемые URL)
Где это не availabe?
Я должен включать альтернативу в платформу, если mod_rewrite не доступен на этом hoster?
mod_rewrite обычно доступен. Если он недоступен на серверах ваших хостов, отбросьте их.
Если вы разрабатываете общедоступное приложение, вам следует учитывать, что mod_rewrite может быть недоступен, и поддерживать альтернативу. AcceptPathInfo
- единица.
Модуль 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. Запрос к приведенному выше URL обрабатывается файлом index.php. Затем вы можете разобрать одну из переменных сервера, например
$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc.
в какой-нибудь объект (тот же объект, который вы бы использовали, если бы у вас был mod_rewrite) и использовать этот объект всякий раз, когда вам нужен доступ к информации об URL.
В любом случае, остальная часть вашего фреймворка/приложения просто обращается к объекту и не беспокоится о том, как информация попала туда.
Он доступен на большинстве серверов, но если вы подозреваете, что это не так, вы должны создать динамический способ получения ссылок - тогда вы могли бы иметь предопределенную константу которые вы изменяете перед всем, что говорит, доступен ли mod_rewrite. Затем вы можете получить URL-адреса, используя эту константу как способ определить, что происходит.
mod_rewrite только для apache, так что если вам нужно работать на IIS или чем-то еще, у вас будут проблемы, но в PHP вы также можете использовать это:
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?app=main&action=show&id=1