Jak přesměrovat www na non-www s Apache na CentOS 7

V současné době je zvykem používat webové adresy bez úvodního „www“. Uživatelé tak zadávají do prohlížeče pouze „domena.cz“, a nikoliv „www.domena.cz“. Přestože je to pro ně pohodlnější a elegantnější, pro server to může znamenat duplicitní obsah a komplikace s optimalizací pro vyhledávače (SEO). Proto je vhodné přesměrovat veškeré požadavky směřující na verzi s „www“ na verzi bez „www“.

Tento návod vám ukáže, jak dosáhnout tohoto přesměrování za pomoci webového serveru Apache na operačním systému CentOS 7.

Důvody pro přesměrování „www“ na „non-www“

Existuje několik přesvědčivých argumentů, proč je přesměrování z „www“ na „non-www“ žádoucí:

1. Uživatelská přívětivost a jednoduchost: Adresu bez „www“ je pro uživatele snadnější zapamatovat a zadávat.
2. Eliminace duplicitního obsahu: Pokud je web dostupný na obou adresách, „www.domena.cz“ i „domena.cz“, vyhledávače mohou obě verze považovat za rozdílný obsah, což má negativní dopad na SEO.
3. Zlepšení SEO optimalizace: Jednotnou verzí webové adresy se usnadní struktura webu a zlepší jeho optimalizace pro vyhledávače.

Kroky pro přesměrování „www“ na „non-www“

Pro provedení přesměrování z „www“ na „non-www“ v Apache na CentOS 7, je nezbytné upravit konfigurační soubor vašeho virtuálního hostitele.

1. Navigace do adresáře s konfiguračními soubory Apache:


cd /etc/httpd/conf.d/

2. Otevření konfiguračního souboru vašeho virtuálního hostitele v textovém editoru:


sudo nano vas-web.conf

(Nahraďte „vas-web.conf“ skutečným názvem vašeho konfiguračního souboru.)

3. Vložení následujících řádků do sekce <VirtualHost *:80>:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%1 [R=301,L]

4. Uložení provedených změn a zavření souboru.

5. Restartování webového serveru Apache:


sudo systemctl restart httpd

Po restartu Apache se veškeré požadavky s „www“ v adrese automaticky přesměrují na verzi bez „www“.

Vysvětlení konfigurace

* RewriteEngine On: Tento příkaz aktivuje modul mod_rewrite, který slouží pro úpravy URL adres pomocí pravidel.

* RewriteCond %{HTTP_HOST} ^www\. [NC]: Definuje podmínku pro přesměrování. Kontroluje, zda se v proměnné %{HTTP_HOST} (což je název hostitele) nachází řetězec „www.“. Pokud ano, provede se další definované pravidlo.

* RewriteRule ^(.*)$ http://%{HTTP_HOST}%1 [R=301,L]: Zde se definuje samotné přesměrování. “ ^(.)$ “ zachytí celou požadovanou URL adresu. Následně “ http://%{HTTP_HOST}%1 “ nahradí „www.“ v adrese za prázdný řetězec a přidá protokol „http“. „R=301“ určuje trvalé přesměrování (301 Moved Permanently) a „L“ znamená, že se jedná o poslední pravidlo v modulu mod_rewrite, které se má aplikovat.

Užitečné tipy

* Protokol HTTPS: Pokud web používá HTTPS, je nutné v pravidle RewriteRule nahradit „http“ za „https”.
* Rozšířená konfigurace: V pravidlech RewriteRule lze definovat další podmínky a pravidla pro přesměrování.
* Ověření funkčnosti: Po dokončení konfigurace je důležité provést test, zda přesměrování funguje správně. Zkuste navštívit svůj web s „www“ v adrese a zkontrolujte, zda jste přesměrováni na verzi bez „www“.

Závěr

Přesměrování z „www“ na „non-www“ je klíčový krok pro optimální funkčnost a dostupnost vašeho webu. Pomůže sjednotit webové adresy, zabrání duplicitnímu obsahu a zlepší SEO.

Pomocí pravidel mod_rewrite v serveru Apache, můžete snadno nastavit požadované přesměrování pro dosažení optimální konfigurace webu. Klíčem k úspěchu je konzistence – je nezbytné podporovat pouze jednu preferovanou verzi adresy.

Často kladené dotazy

1. Je možné přesměrovat na subdoménu? Ano. Místo „http://%{HTTP_HOST}%1“ použijte „http://subdomena.domena.cz“.
2. Jaký je rozdíl mezi přesměrováním 301 a 302? 301 značí trvalé přesměrování, zatímco 302 je dočasné. Pro přesměrování www na non-www je doporučeno používat 301.
3. Lze přesměrovat „www“ na „https“? Ano. V RewriteRule nahraďte „http“ za „https“.
4. Co se stane se stávajícím obsahem webu? Data i obsah zůstanou beze změn. Pouze se změní adresy URL.
5. Je nutné restartovat Apache po každé úpravě konfiguračního souboru? Ano, restart je nezbytný, aby se změny projevily.
6. Funguje přesměrování „www“ na „non-www“ i na jiných serverech? Ano. Princip přesměrování je podobný i u jiných webových serverů, jako je například Nginx.
7. Je potřeba v konfiguraci Apache používat direktivu RewriteBase? Pokud používáte mod_rewrite, doporučuje se direktivu RewriteBase použít pro definici základu pro pravidla RewriteRule.
8. Co znamená „NC“ v RewriteCond? „NC“ je příznak „No Case“, který ignoruje velikost písmen při porovnávání.
9. Jak se ověří, že přesměrování správně funguje? Můžete použít nástroj „curl“ nebo webový prohlížeč. Navštivte web s „www“ a zkontrolujte, zda jste přesměrováni na verzi bez „www“.
10. Existuje nástroj, který usnadní konfiguraci přesměrování? Ano, existuje mnoho nástrojů pro snadnější konfiguraci, například htaccess.makesite.com.

Štítky: Apache, CentOS 7, přesměrování, www, non-www, SEO, virtuální hostitel, mod_rewrite, RewriteRule, RewriteCond, RewriteBase, HTTPS, konfigurace