htacess,. {0,10} работает,. + не для перенаправлений, выдавая ошибку 500 - PullRequest
0 голосов
/ 12 июля 2019

Я бы хотел обработать любой запрос, используя файлы из подкаталога.Пример:

Браузер запрашивает localhost / style.css,

Сервер отвечает (без перенаправления браузера!) С localhost / static / style.css

Это работает без ошибокследующий файл .htacess:

RewriteEngine on
RewriteRule ^(.{0,10})$ static/$1

Но когда я делаю

RewriteEngine on
RewriteRule ^(.+)$ static/$1

Сбой «Внутренняя ошибка сервера».

1 Ответ

0 голосов
/ 12 июля 2019

/var/log/apache2/error.log сказал что-то вроде

Запрос превысил предел 10 внутренних перенаправлений

Я думаю, он был перенаправлен с style.css на static/style.css, затемдо static/static/style.css и т. д.Решением было использовать:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^(.+)$ static/$1

строка RewriteCond предотвращает перенаправление следующего RewriteRule, когда URL-адрес начинается со статического /

Это также весьма полезно: https://stackoverflow.com/a/6800150/4417769

htacess снова выполняет итерации по правилам после перенаправления, поэтому он применяется рекурсивно, и [L] не может его остановить.


другое решение будет

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/static/%{REQUEST_URI} -f
RewriteRule ^(.+)$ static/$1

, которое толькоперенаправляет, если URL после перенаправления соответствует файлу, который существует

...