WordPress návody

Jak ve WordPressu zabránit přímému odkazování na obrázky (hotlinking)

Autor příspěvku Tomáš Cirkl

Ke kvalitnímu obsahu patří i dobře zpracované obrázky, ale někdy není vhodné, aby na ně šlo přímo odkazovat.

Tento druh ochrany obsahu se provádí povětšinou u webů, které se zabývají návody nebo tvorbou kreativního/originálního obsahu. Tím, že na webu zakážete přímé odkazování na obrázky, tak znemožníte jejich zobrazování přímo v prohlížeči a i jejich odkazování ze serverů třetích stran. To je dobré pokud máte velkou návštěvnost a nechcete, aby si další stránky stahovali data přímo z vašeho serveru a tím zvyšovali zátěž.

Anglický termín hotlinking vysvětluje Wikipedie jako:

Hotlinking je způsob zobrazování obrázků (či jiných multimediálních souborů) v rámci webové stránky načítáním z jiného serveru.

Zakázání přímého odkazování na obrázky pomocí .htaccess

Nejlepší cestou pro zakázání přímého odkazování na obrázky je využít soubor .htaccess. Jedná se o malý textový soubor, který se obvykle nachází v základním adresáři WordPressu na hostingu. S jeho pomocí lze:

  • blokovat nebo povolit specifické stránky
  • blokovat nebo povolit HTTP referrer bez identifikace
  • zobrazit vlastní obrázek při detekování přímého odkazu na obrázky
  • chránit specifické soubory a adresáře

Do .htaccess vložte a upravte následující kód:

Poznámka: Před samotnou úpravou .htaccess nezapomeňte vytvořit jeho zálohu.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?vase-domena.cz [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?vase-dalsi-domena.cz [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]

Vysvětlení:

  1. Řádek 1 aktivuje sadu pravidel.
  2. Řádek 2 povolí HTTP referrerům bez identifikace přístup k obrázkům.
  3. Řádek 3 povoluje stránce vase-domena.cz přístup k obrázkům. Nezapomeňte změnit doménu a nepište již www.
  4. Podobně jako řádek 3, dovolí další doméně, v našem případě vase-dalsi-domena.cz přístup k obrázkům.
  5. Řádek 5 nahradí všechny obrázky, ke kterým bylo přistoupeno z nedovolených zdrojů obrázkem z imgur.com. Můžete si také vytvořit vlastní obrázek a nahrát na vlastní hosting. Nicméně jej neukládejte do hlavní složky webu, mohlo by dojít k nekonečné smyčce. Raději zvolte podadresář. Já však doporučuji využít externí službu.

Tento návod funguje pouze pro weby, které jsou umístěny na hlavní doméně webu. Pokud budete chtít ochránit obsah na subdoméně, která nemá vlastní .htaccess soubor, budete muset kontaktovat podporu pro váš hosting.

Pro zakázání přímého odkazování na obrázky jsou dostupné i WordPress pluginy (například Hotlink Protection). Nicméně plugin dělá to stejné co je v návodu výše a stejně jako náš postup, ani on nefunguje na subdoménách.

O autorovi

Tomáš Cirkl

Baví mě Internet a zvláště pak redakční systém WordPress. Jsem pravidelným účastníkem a přednášejícím na WordCamp Praha a WordPress konferencích.

5 komentářů

  • A co na to Google? A Seznam? Pinterest? Facebook? A všechna další místa, kde jsou fotky indexované/používané a zakázat jim to rozhodně nechci? 🙂
    Díky

    • To je dotaz spíše na nějakého SEO specialistu, podle mě, když zakážete hotlink, tak to z vyhledávání zmizí.

  • A můžu dotaz jak na zákaz stahování videa z našeho webu, kde máme umístěno několik online školení, které však nechceme šířit tím, že je může kdokoliv stahovat.. jak zařídit, aby nešlo takové videoprezentace uživateli stáhnout? WordPress 5.6.. Děkuji.

      • Omlouvám se, zřejmě přesně nechápu, jakou položku v .htaccses mám upravit, níže přikládám obsah tohoto souboru. Díky..

        # BEGIN WordPress
        # The directives (lines) between "BEGIN WordPress" and "END WordPress" are
        # dynamically generated, and should only be modified via WordPress filters.
        # Any changes to the directives between these markers will be overwritten.

        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

        # END WordPress

Zanechat komentář

Získejte více informací o WordPress!

Připojte se do našeho emailového seznamu a nenechte si ujít informace, novinky a návody ze světa WordPressu.

Úspěšně jste se zapsali do našeho newsletteru. Děkujeme!