Можно ли настроить Symfony 4 на игнорирование кода, установленного в подкаталогах? - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время я конвертирую старый веб-сайт для использования Symfony 4, и на сайте используется приложение для живого чата LiveZilla.

LiveZilla находится в подпапке сайта, и доступ к нему осуществляется напрямую с использованием URL-адресов в . somesite.com/livezilla. В настоящее время я не могу получить к нему доступ, конечно, потому что я не настроил маршрут для этой папки. Поэтому Symfony решает, что это будет 404.

LiveZilla, по сути, является совершенно отдельным приложением, которое находится здесь в отдельной папке. Это не зависит от веб-сайта, на котором он размещен. Есть ли способ сказать Symfony игнорировать определенные пути, чтобы подобный код мог выполняться без помех?

У меня есть подлое чувство, что мне нужно изменить то, как я смотрю на это, так как я не могунайдите что-нибудь очевидное в документации Symfony по этому поводу, и фреймворк довольно хорошо продуман. Лучшее, что я придумала до сих пор, - это взлом публичного / .htaccess, но это как-то не так ...

1 Ответ

0 голосов
/ 08 ноября 2019

Ваш файл .htaccess должен разрешать запросы непосредственно к существующим файлам, но не к каталогам. См. Это правило:

# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

Это означает, что вы должны иметь доступ к somesite.com / livezilla / index.php , но запрос к somesite.com / livezilla перенаправит на фронт-контроллер Symfony. Поэтому попробуйте изменить ссылки, чтобы они указывали на реальные файлы в подкаталоге.

В редактировании файла .htaccess также нет ничего плохого. Вам просто нужно условие, которое проверяет, относится ли запрос к подкаталогу, и если это так, используйте тот же RewriteRule ^ - [L], как указано выше, чтобы разрешить этот запрос продолжить.

Следующее должно работать, если помещено после вышеуказанного правила( ссылка ):

RewriteCond %{REQUEST_URI} ^/livezilla/ 
RewriteRule ^ - [L]

Или это может быть лучше, поместите это правило сразу после строки RewriteEngine On ( ссылка )

RewriteRule ^(livezilla) - [L]

Флаг [L] означает, что правило будет последним , используемым для запроса.

...