RewriteEngine включен
RewriteRule ^192.168.20.87$ ничего
По какой-то причине, если я делаю это с .htaccess, это работает
Хотя это не будет соответствовать URL http://192.168.20.87/page.php
даже если вы «делаете это с .htaccess
", так что вы должны быть делать что-то еще?
Приведенное выше правило (при использовании в <Directory>
контейнер) соответствует URL-адресу формы http://192.168.20.87/192.168.20.87
(или же http://default.nothing/192.168.20.87
- если ваши имена хостов разрешаются).
Правило перезаписи
шаблон соответствует только URL-пути, а не имени хоста (т. 192.168.20.87
). Таким образом, это соответствует /page.php
, (или же страница.php
- относительный путь/префикс без косой черты - при использовании в каталог контекст как <Directory>
или же .htaccess
.)
Таким образом, это должно быть похоже на следующее:
RewriteRule ^page\.php$ ничего
(Хотя неясно, что вы пытаетесь здесь сделать, что такое «ничего»? Если вы пытаетесь вызвать ошибку 404, то на самом деле это не так.)
Как упоминал @Gerrit в комментариях, когда Правило перезаписи
директива используется в сервер или же виртуальный хост контексте (т.е. не в <Directory>
или же .htaccess
контейнеры - а каталог контекст), то URL-путь, соответствующий Правило перезаписи
директива относится к корневому каталогу и начинается с косой черты, потому что директива обрабатывается намного раньше, до того, как она будет сопоставлена с файловой системой. например. ^/страница\.php$
.
ОБНОВИТЬ:
DocumentRoot /var/www/html/public_html/00-по умолчанию
<Каталог "/volume/dev/html/public_html/00-default">
Я только что заметил, что ваш DocumentRoot
и <Directory>
директивы ссылаются на два разных местоположения файловой системы?! Учитывая ограниченную информацию в вопросе, это <Directory>
контейнер никогда не будет обработан.
Но если у вас нет дополнительных директив в другом месте (которые, как я полагаю, у вас должны быть), то любой .htaccess
файл, помещенный в корень документа (куда, я полагаю, вы его помещаете), никогда не будет обработан.