Отвечайте с HTTP 404 на каждый запрос не в белый список URI с Apache - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь перенаправить на статическую страницу 404.html, если URI запроса не соответствует тому, что находится в моем белом списке.На данный момент это просто /golf, для простоты.

Это моя конфигурация Apache vhosts:

<VirtualHost _default_:443>

DocumentRoot "/var/www/crmpicco/wordpress"
ServerName crmpicco.localhost:443
ServerAlias www.crmpicco.localhost
ServerAdmin crmpicco@crmpicco.co.uk
ErrorLog "/private/var/log/apache2/crmpicco.localhost.error_log"
TransferLog "/private/var/log/apache2/crmpicco.localhost.access_log"
ErrorDocument 404 404.html

<Directory "/var/www/crmpicco/wordpress/">
        Options +FollowSymLinks
        DirectoryIndex index.php
        Options -Indexes
        Require all granted
        AllowOverride all

        RewriteEngine On
        RewriteCond %{REQUEST_URI} !^/golf
        RewriteRule ^ - [R=404,L]
</Directory>

У меня загружен модуль Apache mod_rewrite и, конечно,, перезапустил Apache после добавления RewriteRule.

Чего мне не хватает?На данный момент это просто сценарий 404 внутри моей темы, который обрабатывается Wordpress, а не Apache.

РЕДАКТИРОВАТЬ: Попытка отследить основную причину.

Когда я ищу httpd-ssl.conf на своем компьютере, я получаю несколько копий.

$ locate httpd-ssl.conf
/private/etc/apache2/extra/httpd-ssl.conf
/private/etc/apache2/extra/httpd-ssl.conf.mojave
/private/etc/apache2/original/extra/httpd-ssl.conf
/usr/local/Cellar/httpd/2.4.35/.bottle/etc/httpd/extra/httpd-ssl.conf
/usr/local/Cellar/httpd/2.4.35/.bottle/etc/httpd/original/extra/httpd-ssl.conf
/usr/local/etc/httpd/extra/httpd-ssl.conf
/usr/local/etc/httpd/original/extra/httpd-ssl.conf

apachectl указывает на конфигурацию, которая не используется!

$ apachectl -S
VirtualHost configuration:
*:443                  crmpicco.localhost (/usr/local/etc/httpd/extra/httpd-ssl.conf:121)
ServerRoot: "/usr/local/opt/httpd"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/usr/local/var/log/httpd/error_log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/usr/local/var/run/httpd/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex rewrite-map: using_defaults
PidFile: "/usr/local/var/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="_www" id=70 not_used
Group: name="_www" id=70 not_used

Файл /usr/local/etc/httpd/extra/httpd-ssl.conf был файлом конфигурации, который я редактировал выше для добавления RewriteRules, однако это, похоже, не имело никакого эффекта.

Я отмечаю, что когда я отключаю файл /private/etc/apache2/extra/httpd-ssl.conf, он нарушает мою конфигурацию Apacheи страницы не загружаются, поэтому создается впечатление, что это используемый файл, однако почему apachectl сообщает о другом файле?!

...