Я могу полагаться на mod_rewrite?

Я создаю маленькую платформу PHP для веб-сайтов, которые я создаю и требуемый, чтобы знать, могу ли я полагаться на mod_rewrite, являющийся availabe на большей части hosters.

  • ist является даже хорошей идеей с помощью него? Уже существует много положительных сторон (одна точка входа, "красивые", читаемые URL)

  • Где это не availabe?

  • Я должен включать альтернативу в платформу, если mod_rewrite не доступен на этом hoster?

5
задан someone 4 March 2010 в 16:21
поделиться

5 ответов

​​

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

5
ответ дан 13 December 2019 в 22:06
поделиться

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

2
ответ дан 13 December 2019 в 22:06
поделиться

Модуль 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.

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

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

3
ответ дан 13 December 2019 в 22:06
поделиться

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

0
ответ дан 13 December 2019 в 22:06
поделиться

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

0
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: