Является завихрение php установленным пакетом? Если это не будете Вы, то должен будет, вероятно, заставить администратора устанавливать его для Вас, или необходимо будет выяснить, как установить его как некорневой пользователь в другом каталоге.
You could use the Require
directive:
<Directory "/var/www/folder">
<Files "index.php">
Require method POST
</Files>
</Directory>
However, since that's part of the authorization section, you may want to try this instead:
<Directory "/var/www/folder">
<Files "index.php">
<LimitExcept POST>
Order allow,deny
Deny from all
</LimitExcept>
</Files>
</Directory>
Если ваши уловки с конфигурацией apache не работают, вы можете сделать это в самом index.php. Вверху файла добавьте что-то вроде этого:
<?php
if($_SERVER['REQUEST_METHOD'] != "POST") {
header("HTTP/1.0 403 Forbidden");
print("Forbidden");
exit();
}
Семейство директив управления доступом Order
, Allow
и Deny
устарело в пользу mod_authz_host .
На самом деле это может быть причиной того, что ваша существующая конфигурация не работает, поскольку любые конфликтующие директивы Require
будут иметь приоритет над вашей конфигурацией (которая все еще поддерживается с помощью mod_access_compat , но эти директивы будут удалены в будущей версии).
Поскольку вы используете семейство 2.4, вы также должны использовать новые директивы стиля. Я протестировал приведенную ниже конфигурацию на 2.4.4, и она работает должным образом:
<Directory "/var/www/folder">
Require all granted
<Files "index.php">
<LimitExcept POST>
Require all denied
</LimitExcept>
</Files>
</Directory>
Замечание Джека о том, что вы можете использовать директиву Require method
, также является правильным и, возможно, более похожим на 2.4 способ сделать это.
Условие перезаписи действительно было бы более эффективным, но менее безопасным из-за использования Regex, что иногда бывает сложно.