Utilia

Generátor přesměrování .htaccess

Vygeneruj přesměrování 301 a 302 pro .htaccess nebo Nginx, vynuť HTTPS a www, přesuň doménu a uprav lomítka s kontrolou smyček a řetězců.

Server
Typ přesměrování
Kanonická adresa
Lomítko na konci
Přesunout celou doménu

Nejprve si zazálohuj aktuální konfiguraci a před přepnutím na 301 testuj s 302: prohlížeče trvalá přesměrování ukládají do mezipaměti.

Kontroly

Jak používat generátor přesměrování .htaccess

  1. Vyber Server: Apache (.htaccess) nebo Nginx, potom Typ přesměrování: 301 – trvalé nebo 302 – dočasné.
  2. Do Přesměrování stránek napiš jedno přesměrování na řádek: starou cestu, mezeru a novou URL, například /stara-stranka.html /nova-stranka/. Funguje také tabulátor, čárka nebo -> a můžeš vložit celé staré adresy URL nebo existující řádky Redirect 301 /a /b.
  3. Volitelně zadej Tvoje doména (volitelné) (například example.com), aby přesměrování stránek vedla rovnou na konečnou adresu.
  4. V části Kanonická adresa zaškrtni Vynutit HTTPS a vyber Vynutit www, Odstranit www nebo Ponechat www beze změny. V části Lomítko na konci vyber, zda se má přidat, nebo odstranit.
  5. Pokud se celý web přestěhoval, vyplň Přesunout celou doménu údaji Stará doména a Nová adresa (absolutní URL) a nech zaškrtnuté Zachovat cestu, aby každá stránka skončila na svém protějšku.
  6. Přečti si Kontroly, pak pravidla Kopírovat nebo Stáhnout. Pomocí Načíst příklad si zobrazíš kompletní konfiguraci.

Všechno se generuje ve tvém prohlížeči; nic, co zadáš, se neodesílá na server.

Jak vygenerovaná pravidla fungují

Pro Apache nástroj píše pravidla mod_rewrite, začínající jediným RewriteEngine On. Každá stránka se stane pravidlem RewriteRule, jehož vzor začíná ^/?, takže funguje v souboru .htaccess (kde se úvodní lomítko odstraňuje) i v bloku <VirtualHost>. Tečky, závorky, znaménka plus a další znaky regulárních výrazů ve tvých cestách se escapují a mezera se změní na \x20. V nové URL se escapují $ a %, protože by je Apache bral jako zpětné odkazy, a příznak NE brání tomu, aby Apache URL kódoval podruhé.

RewriteRule nikdy nevidí řetězec dotazu. Když stará adresa jeden obsahuje, například /product.php?id=42, nástroj přidá řádek RewriteCond %{QUERY_STRING} ^id=42$ a příznak QSD, takže se staré parametry zahodí, místo aby se zkopírovaly na novou stránku.

Pravidla jsou seřazena tak, aby se předešlo zbytečným skokům: nejdřív přesun domény, potom přesměrování stránek, pak lomítko na konci a nakonec HTTPS a www. HTTPS a www řeší jedno pravidlo, takže http://www.example.com vede na https://example.com jediným přesměrováním. Pokud je tvá doména známa, přesměrování stránek a lomítek už míří na konečnou adresu HTTPS.

Pro Nginx se HTTPS, www a přesuny domén stanou samostatnými bloky server s return 301 a přesměrování stránek se stanou řádky rewrite, které vložíš do hlavního bloku server. Spouštějí se před porovnáním location, takže mají přednost i před pravidlem lomítka na konci. Znak ? na konci cíle zabrání Nginxu připojit starý řetězec dotazu, když to není žádoucí.

Prováděné kontroly

  • Stránka, která se přesměrovává sama na sebe, nebo dvě stránky, které se přesměrovávají navzájem (smyčka končící hlášením „příliš mnoho přesměrování“).
  • Řetězce typu A → B → C: nasměruj A rovnou na C, protože každý další skok zpomaluje návštěvníky a plýtvá rozpočtem procházení.
  • Stejná stará adresa uvedená dvakrát, kde by platilo jen první pravidlo.
  • Cíl, který není ani absolutní URL, ani cesta začínající /, nebo cíl http:// či se špatným www na tvé vlastní doméně.
  • Nastavení lomítka na konci, které by cíl přesměrovalo znovu nebo ho poslalo zpět na zdroj.

Časté dotazy

Mám použít 301, nebo 302?

Použij 301, když je přesun trvalý: vyhledávače přenesou signály staré stránky na novou a aktualizují svůj index. Použij 302 pro dočasné změny, například údržbu nebo krátkou kampaň. Prohlížeče přesměrování 301 ukládají do mezipaměti, takže nejdřív testuj s 302.

Kam mám umístit soubor .htaccess?

Do kořenové složky webu (často public_html nebo www), vedle index.php nebo index.html. Stažený soubor se jmenuje htaccess.txt; přejmenuj ho na .htaccess nebo vlož pravidla na začátek svého stávajícího souboru. Originál si zazálohuj.

Proč používat RewriteRule místo Redirect 301?

Řádky Redirect pocházejí z modulu mod_alias a běží v jiné fázi než RewriteRule. Kombinace obou v jednom souboru ztěžuje předvídání pořadí. Použití pouze mod_rewrite udrží všechna pravidla v jedné předvídatelné posloupnosti a umožní porovnávat řetězce dotazu.

Po vynucení HTTPS web hlásí „příliš mnoho přesměrování“. Proč?

Za load balancerem, CDN nebo proxy, které ukončují HTTPS, vidí Apache každý požadavek jako obyčejné HTTP, takže %{HTTPS} je vždy vypnuto. V takovém případě testuj místo toho předávanou hlavičku, například RewriteCond %{HTTP:X-Forwarded-Proto} !https, nebo zapni přesměrování v CDN.

Mění tento nástroj můj server?

Ne. Pouze generuje text ve tvém prohlížeči. Nic se nikam neodesílá a ty sám rozhoduješ, kde a jak se pravidla nainstalují.