У меня на сервере есть несколько веб-сайтов, все из которых являются дополнительными доменами, и каждый веб-сайт соответствует отдельной папке внутри папки public_html. . Допустим, у меня есть два сайта:
- sports.com (указывает на папку «спорт»)
- quizzes.com (указывает на папку «викторины»)
По сути, я Я могу получить доступ к каждому веб-сайту, который у меня есть, через URL-адрес каждого отдельного сайта.
Я не был уверен, как решить эту проблему, но в конце концов я остановился на использовании .htaccess для внесения в черный список вручную. каждое имя папки в public_html, к которому я не хочу, чтобы у пользователя был доступ (это все, что находится за пределами корневой папки сайта — например, папка «спорт», если я на сайте Sports.com).
Попытка решения
Я нашел этот код, который должен был запретить пользователям доступ к папке «викторины», если они находятся на сайте Sports.com. :
Код: Выделить всё
RewriteEngine On
RewriteCond %{HTTP_HOST} sports\.com [NC]
RewriteRule ^quizzes/(.*)$ - [F,L]
Код: Выделить всё
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sports\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/quizzes/
RewriteRule .* - [F,L]
Ни одно из этих решений не помогло. Я попробовал добавить его в корень public_html, а также в индивидуальную корневую папку каждого сайта («спорт» и «викторины»). Поведение это совершенно не изменило. Я понятия не имею, почему это не работает.
Примечание: этот код является частью моего более крупного блока кода .htaccess (следующий код представляет собой код public_html .htaccess):
Код: Выделить всё
RewriteEngine on
#redirect sports.com requests to sports folder
RewriteCond %{HTTP_HOST} ^(www.)?sports.com$
RewriteCond %{REQUEST_URI} !^/sports/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sports/$1
RewriteCond %{HTTP_HOST} ^(www.)?sports.com$
RewriteRule ^(/)?$ sports/index.php [L]
#code to blacklist "quizzes" directory
RewriteCond %{HTTP_HOST} ^sports\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/quizzes/
RewriteRule .* - [F,L]
#disallows files from being listed if there is no index file in directory
IndexIgnore *
Есть идеи, почему это не работает или какие еще способы можно попытаться найти решение этой проблемы?
Кроме того, является ли проблемой то, что пользователь может таким образом перемещаться по моим папкам, если единственные папки, к которым он может получить доступ, — это папки других общедоступных веб-сайтов? Папки, доступ к которым не должен быть доступен, уже содержат сообщение об ошибке «Запрещен доступ».
Проверено иное
Я пытался выяснить, включен ли mod_rewrite, но не смог понять, как это сделать. Я использовал sudo a2enmod rewrite в терминале через SSH, но он сказал, что команда не существует. Я повторил phpinfo(), но там ничего не сказано о mod_rewrite. Я также попробовал print_r(apache_get_modules()); и получил ошибку 500. Кроме того, я уже могу перезаписывать URL-адреса других страниц сайта, поэтому предполагаю, что это означает, что он включен.
Я также пробовал очистить кеш и зайти на сайт в режиме инкогнито. режим, который не имел никакого значения.
Подробнее здесь: https://stackoverflow.com/questions/786 ... g-htaccess
Мобильная версия