.htaccess - обслуживать запросы к файлу .phar, если он найден, в противном случае - к index.php - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу развернуть веб-приложение, упакованное в файл .phar, и обслуживать запросы от него, как я это делаю из файла index.php в $_SERVER["DOCUMENT_ROOT"].

По умолчанию mod_rewrite в Apache идеткак это:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Если бы я хотел сделать то же самое с файлом .phar, я полагаю (хотя я могу ошибаться, поэтому любое направление будет более чем приветствоваться), я мог бы сделать это так:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /application.phar [L]
</IfModule>

Я всегда мог иметь два файла .htaccess и использовать соответствующий в зависимости от типа развертывания, но я хотел бы поддержать ОБА стратегии, если это возможно.Хочу ли я запускать приложение, упакованное или распакованное, я хочу иметь возможность повторно использовать файл .htaccess между проектами, но принимая во внимание упакованную версию, должен быть предпочтительный способ.

Как я могу объединить этидва разных правила в одном?

1 Ответ

0 голосов
/ 29 ноября 2018

Иметь это так:

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    # ignore all existing files/directories from rewrite
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # if application.phar exists then use it
    RewriteCond %{DOCUMENT_ROOT}/application.phar -f
    RewriteRule ^ application.phar [L]

    # otherwise use index.php
    RewriteRule ^ index.php [L]

</IfModule>
...