Я хотел бы знать, есть ли способ изменить относительный корень документа для дополнительной безопасности. Я попытаюсь объяснить себя в следующем примере:
/root /app /public
Скажем, запрос www.example.com
на веб-сервер указывает на root
папку.
Мне было интересно, есть ли какая-либо конфигурация, например, через файл .htaccess
расположенный в указанной root
папке, который заставит сервер указывать на public
папку вместо этого, поэтому любые удаленные пути всегда будут относиться к указанной public
папке.
В этом случае www.example.com/app
запросит папку app
внутри public
, а не папку app
внутри root
, оставив последний недоступным из удаленного запроса URL-адреса.
Таким же образом, www.example.com/public
запросит public
папку внутри нашей корневой общей папки и так далее.
Я читал различные темы, подобные этой, в которой упоминается использование пользовательской конфигурации .htaccess
для достижения чего-то подобного, но для этого требуется ручная настройка URL-адреса запроса в указанном файле, в то время как я намерен работать без дальнейшей настройки независимо от того, где вы размещаете приложение. Еще одно возможное решение, которое я видел, делает жесткую переадресацию через файл .htaccess
, который фактически ничего не решает.
Не стесняйтесь редактировать этот пост, так как мне, возможно, было трудно попытаться понять мою точку зрения.
Я предлагаю вам указать сервер на общедоступную папку, так как он намного безопаснее, вы можете видеть, что все фреймворки ведут себя одинаково, все они имеют «общедоступную» папку, на которую указывает сервер.
В общей папке у вас есть одна точка входа в ваши скрипты, например
index.php
и из этой записи вы будете общаться с вашим приложением.
Конечно, вы все еще можете работать так, как вы просили, и он отлично подойдет, но кто знает, может быть, вы что-то упустите, а кто-то сможет получить доступ к вашим «внутренним» файлам и просмотреть их.
Вы можете использовать этот простой файл .htaccess
:
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ /public/$1 [L] </IfModule>
Любой запрос на вашем сервере укажет на общую папку.
Внутри общей папки вы можете добавить дополнительный файл .htaccess
обрабатывающий правила вашего сайта.
Также вы можете размещать несколько сайтов на одном веб-сервере. Вы можете комбинировать создание VirtualHosts и Alias с помощью mod_alias, упомянутых ранее
В этом примере предполагается, что у вас есть собственный сервер (выделенный или VPS)
Используя Virtualhosts, вы можете указать веб-серверу, когда вы получаете запрос на http://www.example.com для обслуживания контента из определенной папки.
Пример Virtualhost:
<Virtualhost *:80> ServerName ^domain_or_ip^ DocumentRoot ^path of the public folder^ DirectoryIndex index.php home.php index.html index.htm ErrorLog ^path for a file containing php errors^ CustomLog ^path for logging whitch browser and ip visited your site^ combined </Virtualhost>
Вы находитесь на веб-сервере Apache? Если я правильно понимаю, вы ищете виртуальные каталоги. Обычно мы должны помещать наше веб-приложение в корень документа Apache, чтобы сделать приложение доступным из сети. Тем не менее, есть трюк, чтобы сделать веб-приложение еще доступным, даже если мы выставим его вне корня документа Apache. Пожалуйста, прочтите это здесь: http://w3shaman.com/article/creating-virtual-directory-apache Кредиты на W3Shaman.com, очевидно.