Каковы основные различия между тюрьмами во 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>
@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>
И ЭТО РАБОТАЕТ!
СПАСИБО всем, особенно @ Мистер Уайт
Поведение, которое вы видите, указывает на то, что в конфигурации вашего сервера включены MultiViews
(часть mod_negotiation) (по умолчанию он не включен).
Начиная с / admin
- это физический каталог, а плагин
соответствует базовому имени файла в этом каталоге, mod_negotiation ищет подходящий ответ, тестируя различные расширения файлов. В этом случае он выдаст внутренний подзапрос для /admin/plugin.php
- без каких-либо параметров запроса. Это происходит до mod_rewrite, поэтому ваша обновленная директива, похоже, ничего не делает.
Вам нужно отключить MultiViews
.
В верхней части вашего . htaccess
добавьте следующее:
Options -MultiViews
Это перенаправление работает.
Это обычно называется внутренней перезаписью . «Перенаправление» подразумевает внешнее перенаправление .
Обратите внимание, что регулярное выражение admin / plugin / (. *?) / (. *)
потенциально соответствует большему, чем предполагалось, поскольку вам не хватает якоря начала строки ( ^
). Таким образом, это также будет соответствовать чему-то вроде / foobaradmin / plugin //
.