1. Home
  2. Jak změnit nebo zanořit DocumentRoot domény?

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.

Updated on 23.1.2023

Was this article helpful?