Вложенное правило перезаписи .htaccess работает только на некоторых серверах. - PullRequest
0 голосов
/ 21 марта 2019

У нас есть часть программного обеспечения, работающая на многих серверах различных сетей, где нет доступа к конфигурации Apache. Иногда мы сталкиваемся со следующей проблемой:

В нашем программном обеспечении есть файл .htaccess, который определяет правило перезаписи:

...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
...

, который переписывает запросы к index.php в текущем каталоге.

В некоторых системах это создает некоторые проблемы. Единственное решение, которое мы нашли, это изменить правило на

RewriteRule . <path relative to webroot>/index.php [L]

Я не понимаю, почему у нас есть эта проблема, и я хотел бы иметь решение, которое работает в обоих вариантах.

Заранее спасибо!

1 Ответ

0 голосов
/ 21 марта 2019

Эта строка RewriteRule . <path relative to webroot>/index.php [L]

первая часть после RewriteRule - это шаблон, который . в вашем правиле.

Вторая часть называется Замена, которая в вашем правиле - <path relative to webroot>/index.php.

Последняя часть - это флаг, который [L] в вашем правиле

Из документации Apache:

Подстановка правила перезаписи - это строка, которая заменяет исходный URL-путь, которому соответствует шаблон. Подстановка может быть: путь к файловой системе, URL-путь , Абсолютный URL или - (тире).

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule

Итак, в соответствии с вашей структурой вы можете использовать тот, который удовлетворяет ваши потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...