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:
- buďto pomocí .htaccessu
- 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.