Как изменить корень документа в поведении веб-сервера?

Я хотел бы знать, есть ли способ изменить относительный корень документа для дополнительной безопасности. Я попытаюсь объяснить себя в следующем примере:

/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 , который фактически ничего не решает.

Не стесняйтесь редактировать этот пост, так как мне, возможно, было трудно попытаться понять мою точку зрения.

Related of "Как изменить корень документа в поведении веб-сервера?"

Я предлагаю вам указать сервер на общедоступную папку, так как он намного безопаснее, вы можете видеть, что все фреймворки ведут себя одинаково, все они имеют «общедоступную» папку, на которую указывает сервер.

В общей папке у вас есть одна точка входа в ваши скрипты, например

 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, очевидно.