Potřeba prvotního nastavení nebo následné změny URL webu je poměrně běžný úkon. Nejčastěji k němu dochází z důvodu přesunu webu z lokálního vývojového prostředí do ostrého provozu. Zatímco v při vývoji si obvykle vystačíme s URL typu http://localhost/site
, pro veřejný provoz potřebujeme web zprovoznit na nějakém smysluplném URL typu https://www.example.com/
. Dalšími důvody mohou být změna domény webu, ať již stejného nebo jiného řádu, přesun webu ze složky na vlastní doménu apod. Samostatnou kapitolou je změna poskytovatele hostingu, a s tím související potřeba úpravy nastavení, aby vše fungovalo přesně dle očekávání. Nevylučuje se ani kombinace všech, popř. některých uvedených možností. V následujícím příspěvku si ukážeme, jak se nastavení, popř. změna URL provádí na Grav CMS, a to v případě konkrétního poskytovatele hostingových služeb WEDOS.
Je důležité upozornit na skutečnost, že ke změně by mělo docházet pouze výjimečně. Pokud je změna nezbytná a ovlivní URL, je třeba zajistit přesměrování původních odkazů na nové.
Pro lepší představu budu demonstrovat nastavení, jak by bylo realizováno na webu Grav.cz a jeho doméně grav.cz
. Mějme za to, že původní lokální verze webu běžela na jednoduchém URL http://localhost/grav
(ve skutečnosti byl Grav.cz uveden přímo do ostrého provozu a lokální verzi nikdy neměl). Pro tento provoz Grav CMS nevyžaduje žádné speciální nastavení a jednoduše funguje s výchozím.
Následně je potřeba převést web do ostrého provozu na doménu grav.cz
. Na webovém serveru tedy do příslušné složky zkopírujeme lokální verzi webu. V případě poskytovatele hostingu WEDOS je k tomuto účelu předpřipravena složka /www/domains
.
Použití této složky není výslovně vyžadováno, ale pak je třeba si více pohrát s nastaveními příslušných .htaccess
souborů, což je nad rámec tohoto článku.
V uvedeném případě tedy dojde ke zkopírování obsahu lokální složky /grav
do serverové složky /www/domains/grav.cz
.
Na serveru musí název podsložky odpovídat názvu domény, aby bylo funkční výchozí směrování serveru.
Pokud jsou záznamy na DNS správně nastaveny, pak by se po zadání domény, resp. URL http://grav.cz
měl zobrazit web, úplně shodně jako na lokálním serveru. Co však může někoho nepříjemně překvapit (a z diskusních fór je patrné, že i překvapí), je chování URL. Např. URL pro Blog není v požadovaném výstupu http://grav.cz/blog
, ale http://grav.cz/www/domains/grav.cz/blog
. Řešení je jednoduché a vyžaduje drobné úpravy na dvou místech. První je v souboru system.yaml
, v němž změníme hodnoty proměnných následovně:
custom_base_url: 'http://grav.cz'
session:
path: /
Změny lze udělat i přes Admin Panel, ale instance Gravu po uložení nebude dočasně fungovat.
Následně je třeba upravit, resp. přidat záznam v souboru .htaccess
v kořenové složce webu, tedy /grav.cz
:
## RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/domains/grav.cz/
RewriteRule ^(.*)$ /domains/grav.cz/$1
## End RewriteBase /
A to je vše. Nyní již bude vše fungovat. Nicméně se podívejme ještě na další užitečná nastavení v souboru .htaccess
, která již nesouvisí s přímo Gravem, ale s webem jako takovým.
Aktuálně bude funkční jak varianta http://grav.cz/
, tak i varianta http://www.grav.cz/
, což není ideální. Řekněme, že jako výchozí budeme chtít variantu s www
, na níž bude varianta bez www
přesměrována. To zajistíme přidáním následujícího záznamu do souboru .htaccess
v kořenové složce webu, tedy /grav.cz
:
## Redirect2WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) https://www.%{HTTP_HOST}/$1 [R=301,L]
## End Redirect2WWW
Pokud návštěvník zadá URL http://grav.cz/blog
, bude přesměrován na URL http://www.grav.cz/blog
.
Pokud převedeme web na zabezpečený protokol HTTPS, je žádoucí všechny původní odkazy přesměrovat. Další možností je tedy přidání následujícího záznamu do souboru .htaccess
v kořenové složce webu, tedy /grav.cz
, který zajistí přesměrování původních odkazů z nezabezpečeného protokolu HTTP na zabezpečený protokol HTTPS:
## Redirect2HTTPS
RewriteEngine On
RewriteCond %{HTTPS} Off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
Header set Content-Security-Policy "upgrade-insecure-requests;"
## End Redirect2HTTPS
Pokud návštěvník zadá URL http://www.grav.cz/blog
, bude přesměrován na URL https://www.grav.cz/blog
.
RewriteEngine On
stačí mít v souboru .htaccess
pouze jednou na začátku. Posloupnost jednotlivých přepisů je třeba ověřit v praxi, mně se na WEDOS osvědčilo pořadí Redirect2HTTPS > Redirect2WWW > RewriteBase
.
Uvedený návod není vyčerpávající, neřeší všechna možná specifika jednotlivých webových serverů nebo poskytovatelů hostingových služeb. Lze však použít jako určité vodítko pro případné úpravy a může ušetřit čas a předejít případné frustraci.
Nalezli jste v článku chybu, ať již gramatickou nebo faktickou? Článek prošel pouze autorskou korekturou a drobné nedostatky, jako překlepy nebo chybný slovosled, se v něm mohou vyskytovat. Pokud je objevíte, pomozte příspěvek upravit oznámením přes kontaktní formulář nebo na e-mail. Budou vám vděčni nejen autoři, ale zejména ostatní čtenáři.
Pomozte Grav.cz prolinkovat. Projekt Grav.cz se za dva roky provozu rozrostl a ve starších příspěvcích na Blogu mohou být uvedeny pasáže, které by stálo za to prolinkovat na konkrétní související řešení, která jsou uvedena v následujících příspěvcích. Pokud takové objevíte, pošlete informaci přes komunikační kanály uvedené v předchozím nebo následujícím odstavci.
Diskuze k článku není k dispozici. Pokud ale máte k tématu článku podněty, připomínky nebo dotazy, je možné je sdělit ve skupině na Facebooku, kde se k nim vyjádří nejen autor, ale případně i další diskutující.