FreeBSD Jails или экземпляры Docker

Каковы основные различия между тюрьмами во FreeBSD и Docker в Linux? Один из них значительно безопаснее или производительнее другого? Тюрьмы намного старше экземпляров Docker, поэтому сам код можно считать более безопасным. Но тюрьмы никогда » Существует .htaccess, содержащий эту строку: RewriteRule admin / plugin /(.*?)/(.*) /...

У меня есть перенаправление, но я не знаю, где оно активировано?

Я установили приложение PHP под названием GARRADIN. Существует .htaccess, содержащий эту строку:

RewriteRule admin/plugin/(.*?)/(.*) /admin/plugin.php?_p=$1&_u=$2 [QSA,L]

Это перенаправление работает. plugin.php вызывается, но параметры $ 1 и $ 2 пусты. $ _GET ['_ p'] ничего не возвращает в скрипт.

Чтобы понять, почему параметры не передаются, я попытался изменить .htaccess, но что бы я ни делал, это не принимается во внимание. Кажется, это перенаправление настроено где-то еще?

Что я сделал: - Я вставил ошибку в .htaccess, и я получаю сообщение об ошибке сервера => ОК, .htaccess учтен. - Я изменил строку для перенаправления на XXXXplugin.php, но plugin.php все еще вызывается. - .htaccess переименован в BAK.htaccess => перенаправление все еще работает! - Я сбросил кеш браузера, использовал другой браузер => такое же перенаправление.

так ГДЕ настроено перенаправление?

THX для вашей помощи.

Полный .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule admin/plugin/(.*?)/(.*) /admin/XXXXXXXXXXXXplugin.php?_p=$1&_u=$2 [QSA,L]
    RewriteRule f/([\d\w]+)/(.*) /file.php?id=$1&file=$2 [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* /index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>
1
задан 14 December 2018 в 15:33
2 ответа

@MrWhite повел меня в правильном направлении. Мне пришлось деактивировать MultiViews, но не в верхней части файла .htaccess (что приводит к ошибке сервера), а в файле конфигурации виртуального хоста и в разделе.

<Directory /home/gestion_o2form/public_html/www>
    Options -Indexes +IncludesNOEXEC +FollowSymLinks -MultiViews <= HERE
    allow from all
    AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,-MultiViews,SymLinksIfOwnerMatch
    Require all granted
    AddType application/x-httpd-php .php
</Directory>

И ЭТО РАБОТАЕТ!

СПАСИБО всем, особенно @ Мистер Уайт

2
ответ дан 3 December 2019 в 18:25

Поведение, которое вы видите, указывает на то, что в конфигурации вашего сервера включены MultiViews (часть mod_negotiation) (по умолчанию он не включен).

Начиная с / admin - это физический каталог, а плагин соответствует базовому имени файла в этом каталоге, mod_negotiation ищет подходящий ответ, тестируя различные расширения файлов. В этом случае он выдаст внутренний подзапрос для /admin/plugin.php - без каких-либо параметров запроса. Это происходит до mod_rewrite, поэтому ваша обновленная директива, похоже, ничего не делает.

Вам нужно отключить MultiViews .

В верхней части вашего . htaccess добавьте следующее:

Options -MultiViews

Это перенаправление работает.

Это обычно называется внутренней перезаписью . «Перенаправление» подразумевает внешнее перенаправление .

Обратите внимание, что регулярное выражение admin / plugin / (. *?) / (. *) потенциально соответствует большему, чем предполагалось, поскольку вам не хватает якоря начала строки ( ^ ). Таким образом, это также будет соответствовать чему-то вроде / foobaradmin / plugin // .

1
ответ дан 3 December 2019 в 18:25

Теги

Похожие вопросы