Nastavení nebo změna URL webu

Vít Petira 3 minuty, 18 sekundy 151 grav tipy dokumentace ukázky

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

WWW/URLPro 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 .htaccsess 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 .htaccsess, která již nesouvisí s přímo Gravem, ale s webem jako takovým.

Přesměrování na variantu s WWW

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

Přesměrování na zabezpečený protokol HTTPS

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

Předchozí příspěvek Následující příspěvek