Jak změnit nebo zanořit DocumentRoot domény?

Jak změnit či zanořit kořenový adresář domény

Řada frameworků jako je třeba Symfony nebo Nette vyžaduje DocumentRoot zanořený od zbytku aplikace. Je to hlavně z bezpečnostních důvodů.

Co je DocumentRoot

DocumentRoot je výchozí kořenový adresář webového prostoru pro doménu. Webserver jej zobrazuje webovým prohlížečům a defaultně se z něj načítá obsah souboru index.php nebo index.html.

Jak na to

Jsou dvě možnosti, jak změny provést:

  1. buďto pomocí .htaccessu
  2. nebo změnou v konfiguračním souboru webserveru.

Změna DocumentRoot pomocí .htaccessu

Pokud máte k dispozici soubor .htaccess, tak nejrychlejší řešení je do požadovaného adresáře vložit další .htaccess s pár řádky kódu navíc. Tento postup však lze použít pouze v případě, že používáte Apache2.

Když chceme změnit DocumentRoot na jinou složku nebo subdoménu, tak musíme jít do této složky a vytvořit v ní soubor .htaccess nebo do něj vložit tyto řádky:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /www/$1
RewriteRule ^(/)?$ www/ [L]

Tímto zápisem bude webserver brát soubory z hlavní složky /www díky nastavenému .htaccessu z jiné podsložky/subdomény.

Změna DocumentRoot – Apache2

Předpokládáme, že váš web běží přes HTTPS, tudíž je šifrovaný, takže stačí upravit konfigurační soubor ve VPS Centru v sekci Nastavení u konkrétní domény.

<VirtualHost *:443>
DocumentRoot /www/hosting/vasedomena.cz/subdomena/novyDocumentRoot
Servername subdomena.vasedomena.cz
ServerAlias subdomena.vasedomena.cz
ServerAlias subdomena.vasedomena.cz.xxxID.vas-server.cz subdomena.vasedomena.cz.xxxID.vas-server.cz

Use vasedomena.cz
Use vasedomena.cz-ssl
</VirtualHost>

Pokud využíváte i nešifrovanou verzi webu, tak stejnou změnu musíte provést i v sekci s portem 80 viz. <VirtualHost *:80>.

Pak stačí konfigurační soubor uložit, webserver se automaticky restartuje a načte si novou konfiguraci.

Změna DocumentRoot – Nginx

V Nginxu to je trošku složitější. Musíte najít řádky server_name a root, jako na příkladu zde:

# ################ only claire.moda and www.claire.moda ####################

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;

### redirect to https - zacatek
# if ($scheme != https) { return 308 https://$host$uri$is_args$args; }
### redirect to https - konec

server_name subdomena.vasedomena.cz subdomena.vasedomena.cz subdomena.vasedomena.cz.aja10.vas-server.cz subdomena.vasedomena.cz.aja10.vas-server.cz;
root /www/hosting/vasedomena.cz/subdomena/documentroot;

Na nových serverech Buster+ stačí provést změnu pouze na tomto jediném místě. Bohužel na starších serverech je rozdělená konfigurace pro port 80 a 443, tak zde to musíte změnit na obou místech.

Pak stačí konfigurační soubor uložit, provede se restart a máte nový DocumentRoot.

Pomohl vám tento článek?

Podobné články