Выполнение PHP без расширения, не используя mod_rewrite?

Используя Apache 2.2 и PHP 5, что лучший способ состоит в том, чтобы выполнить PHP без .php расширение? Например, мне назвали сценарий app.php и мне нравится вызывать его как:

http://example.com/app

Заметьте, что я все еще хочу сохранить .php расширение файла и я не имею mod_rewrite. Не хочу использование index.php также, потому что требуется слишком много каталогов.

Я действительно находил один путь путем добавления этого к моему .htaccess,

AddHandler server-parsed .php
SetHandler application/x-httpd-php
AddHandler application/x-httpd-php .php

Страница работает немного медленнее при помощи этого. Я подозреваю, что это вызывает SSI на каждой странице PHP. Удивление, если существуют какие-либо лучшие способы выполнить это.

12
задан ata 8 October 2019 в 18:52
поделиться

3 ответа

Альтернативой является использование согласования содержимого . Включите multiviews :

Options +MultiViews

Если именованный ресурс не существует, Apache выполнит глобальный поиск файла, а затем отсортирует его на основе типа мультимедиа и требований кодирования контента, отправленных браузером. Если есть только один файл (ваш PHP-скрипт), то это то, что разрешает URL-адрес.

25
ответ дан 2 December 2019 в 04:53
поделиться

Короткий ответ: вы не сможете сделать это так, как хотите. PHP потребуется НЕКОТОРЫЕ расширение для выполнения файлов, поэтому вы можете оставить его как * .php.

Если вы не используете mod_rewrite, вам придется вызывать файлы, используя полный файл и расширение.

В этом прелесть mod_rewrite - он позволяет вам делать именно такие вещи.

Я хотел бы задать вам вопрос - почему вы не можете использовать mod_rewrite? Это проблема среды, выбор, используете ли вы Lighttpd (светлый)?

Extension

Оберните свои правила перезаписи примерно так, чтобы они не взорвались, если сервер не поддерживает mod_rewrite:

<IfModule mod_rewrite.c>
// DO REWREITE HERE
</IfModule>

Если вы считаете, что это проблема безопасности или что-то столь же верное, вы также можете выполнить следующую проверку и отправить их на пользовательский 404 или даже в свою документацию и дать им примеры того, как включить mod_rewrite, объяснить необходимость и т. Д. Однако проверка не является обязательной - если вы ее не используете, пользователи просто увидят расширение .php, но ваши страницы все равно должны работать.

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /application/errors/404.php
    // ERROR 404 ABOVE OR DO ANOTHER DIRECT REDIRECT TO AN INFORMATION PAGE
</IfModule>
-1
ответ дан 2 December 2019 в 04:53
поделиться

Вы также можете принудительно указать mime-тип определенного файла в .htaccess:

<Files app>
ForceType application/x-httpd-php
</Files>
7
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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