Рейтинг:1

Как я могу ограничить доступ к `/`, а также к `/index.php` на моем сервере, но не разрешить ничего другого?

флаг jp

Я хотел бы разрешить пользователям посещать только index.php (а также просто /) на моем сервере и ничего больше (возврат 403, если действителен, и 404, если файл недействителен).

Как я могу это сделать? Я пробовал следующие решения Отказ в доступе ко всем файлам кроме index.html apache

Запретить доступ ко всем файлам, кроме index.php, но разрешить доступ через «/» в файле htaccess

но они, кажется, не имеют никакого эффекта.

Мой файл .htaccess таков, но он не действует, и я все еще могу получить доступ к другим файлам на моем сервере:

Порядок разрешить, запретить
Запретить от всех
<Индекс сопоставления файлов\.php>
        Разрешить от всех
</FilesMatch>

Я не уверен, нужно ли мне что-то определять в конфигурации моего виртуального хоста?

Мой файл виртуальных хостов:

Веб-мастер администратора сервера@localhost
имя_сервера server.mydomain.com
Псевдоним сервера server.mydomain.com
DocumentRoot /var/www/server.mydomain.com
DirectoryIndex index.php
Журнал ошибок ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log вместе

SSLCertificateFile /etc/letsencrypt/live/server.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.mydomain.com/privkey.pem
Включить /etc/letsencrypt/options-ssl-apache.conf

Вывод apache2ctl -S:

Конфигурация виртуального хоста:
*:443 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com-le-ssl.conf:2)
*:80 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com.conf:1)
Корневой сервер: "/etc/apache2"
Основной корневой документ: "/var/www/html"
Основной журнал ошибок: "/var/log/apache2/error.log"
Сшивание Mutex ssl: using_defaults
SSL-кэш Mutex: using_defaults
Мьютекс по умолчанию: dir="/var/run/apache2/" механизм=по умолчанию
Mutex mpm-accept: using_defaults
Обратный вызов сторожевого таймера Mutex: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Определить: DUMP_VHOSTS
Определить: DUMP_RUN_CFG
Пользователь: name="www-data" id=33
Группа: name="www-data" id=33
Рейтинг:1
флаг us
Rob

ИМХО, вы идете по неправильному пути и пытаетесь решить проблему, которой можно полностью избежать:

Просто не храните файлы и каталоги, которые не принадлежат сети, в вашем DocumentRoot.

Ограничьте содержимое каталога /var/www/server.example.com только к этому index.php файл, и вы не ошибетесь.


Этот вопрос отмечен историческим версия и синтаксис не подходят для текущей версии Apache httpd 2.4. - Видеть https://httpd.apache.org/docs/2.4/upgrading.html


Когда вы хотите опубликовать что-то под http://www.example.com/some-path/ использовать Псевдоним директива для предоставления другого каталога в целом, а не для создания подкаталога /var/www/server.example.com/some-path/ (например, создать /var/www//какой-то путь) и используйте:

<VirtualHost *:80
    ServerAdmin webmaster@localhost
    ServerName server.mydomain.com
    ServerAlias server.mydomain.com
    DocumentRoot /var/www/server.example.com

    Alias /some-path "/var/www/some-path"

    <Directory "/var/www/some-path"> 
       # add settings here, for example
       Order deny,allow
       Deny from all
       Allow From 127.0.0.1
    </Directory>
</VirtualHost>

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.