Подтвердить что ты не робот

Запуск 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. Интересно, есть ли лучшие способы сделать это?

4b9b3361

Ответ 1

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

Options +MultiViews

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

Ответ 2

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

<Files app>
ForceType application/x-httpd-php
</Files>

Ответ 3

Короткий ответ заключается в том, что вы не сможете сделать это так, как хотите. PHP будет нуждаться в расширении SOME для выполнения файлов, чтобы вы могли оставить его как *.php.

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

Это красота mod_rewrite - она ​​позволяет вам делать именно такую ​​вещь.

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

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>