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

Jak změnit nebo zanořit DocumentRoot 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ů. DocumentRoot je kořenový adresář, který bude webserver zobrazovat webovým prohlížečům.

Jsou dvě možnosti, jak toho dosáhnout. Buďto pomocí .htaccessu nebo změnou v konfiguračním souboru webserveru.

 

Změna DocumentRoot pomocí .htaccessu

Pokud máte k dispozici .htaccess, tak nejrychlejší řešení je do požadovaného adresáře vložit .htaccess s pár řádky kódu.  Tento postup 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, 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 a 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 napříkladu tady.

# ################ 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.

 

Poslední změna: 27 dubna, 2022

Pomohla ti tato nápověda?