Jak změnit nastavení souboru php.ini?

Soubor php.ini

Nastavení v souboru php.ini ovlivňuje nastavení všech domén hostovaných na serveru. Není proto bohužel možné vyhovět individuálním požadavkům na úpravu tohoto souboru.

Jak tedy ovlivnit chování php serveru, bez editace souboru php.ini?

Řešením je textový soubor s názvem .htaccess, který umístíte na FTP server.

Ukázka obsahu nastavení souboru .htaccess:

php_flag magic_quotes_gpc on
php_flag register_globals on
php_flag session.auto_start off

Výčet a popis všech direktiv naleznete v dokumentaci k PHP.

Co je to soubor .htaccess?

Soubor .htaccess je textový soubor obsahující uživatelské nastavení parametrů pro chod vašeho webu na webserveru apache, například pravidla pro mód rewrite. Soubor .htaccess umisťujete zpravidla na FTP do hlavní složky se jménem vaší domény nebo některé ze subdomén, které má ovlivnit.

K čemu slouží mod_rewrite?

Mod_rewrite se používá pro "překládání" URL požadavků. Zpravidla pro vytvoření "hezkých" odkazů, vhodných pro SEO. Jedná se o rozšiřující modul webserveru apache a na našich serverech je povolen. Pravidla rewrite modu nastavujete v souboru .htaccess, který musí být v uživatelském rozhraní povolen.

Dokumentace je k dispozici na http://httpd.apache.org/

Má přednost nastavení v .htaccess nebo v uživatelském rozhraní?

Pokud máte některou z direktiv "session.auto_start" a "display_errors" nastavenou zároveň v uživatelském rozhraní a zároveň v souboru .htaccess, má přednost vždy nastavení v souboru .htaccess, samozřejmě vyjma případu, kdy v uživatelském rozhraní nemáte používání souboru .htaccess aktivováno.

Jak můžu přesměrovat doménu nebo subdoménu?

Přesměrování nebo-li redirect lze pro doménu nebo její subdomény řešit dvěma způsoby a to buď pomocí vašeho skriptu v souboru .htaccess, který umístíte na FTP nebo pomocí uživatelského rozhraní.

Přesměrování pomocí souboru .htaccess

  1. Otevřete na vašem počítači kterýkoliv váš textový editor např. "Notepad".
  2. Do textového dokumentu zkopírujte tento text:

  3. RedirectMatch permanent (.*) http://SEM NAPIŠ, KAM PŘESMĚROVAT$1

  4. Text: "SEM NAPIŠ, KAM PŘESMĚROVAT" nahraďte za název domény, kam má být doména přesměrována. Například máme doménu example.com, kterou chceme přesměrovat na doménu sempresmeruj.cz, výsledný zápis pak může vypadat takto:

  5. RedirectMatch permanent (.*) http://sempresmeruj.cz$1

    nebo

    RedirectMatch permanent (.*) http://www.sempresmeruj.cz$1

  6. Pokud jste skript správně upravili, dejte ve vašem textovém editoru "Uložit jako...". Do názvu souboru napište .htaccess (pozor včetně tečky).
  7. Pokud se vám soubor uložil s koncovkou např. txt, doc apod., klikněte na název souboru ve vašem souborovém prohlížeči (Průzkumník, Total Commander nebo jiný) pravým tlačítkem myši a ze zobrazeného kontextového menu vyberte "Přejmenovat..." a koncovku souboru jednoduše vymažte a klávesou <enter> změnu názvu potvrďte.
  8. Po přejmenování souboru do požadovaného tvaru .htaccess nahrajte na FTP vaší domény nebo subdomény, kterou chcete přesměrovat.
  9. Nyní zadejte URL adresu domény ve vašem webovém prohlížeči.
  10. Pokud se přesměrování neprojevilo, zkuste pročistit cache vašeho webového prohlížeče. Zkontrolujte zda v uživatelském rozhraní máte zapnutou podporu .htaccess viz detail domény a záložka "WWW+FTP", kde klikněte na tlačítko "Nastavení", viz ilustrační obrázek.

Přesměrování pomocí uživatelského rozhraní

V principu se jedná o stejné řešení jako v předešlém případě, jen s tím rozdílem, že cílovou adresu budeme zadávat přímo v nastavení rozhraní a webový obsah na FTP je pro konkrétní složku smazán.

  1. Přihlaste se do uživatelského rozhraní.
  2. U vaší domény (viz seznam domén na "Dashboardu" nebo v menu "Domény>Správa domén") klikněte na tlačítko "Detail".
  3. Klikněte na záložku "WWW+FTP".
  4. Pokud se v seznamu založených doménových záznamů, nachází záznam, který chceme založit jako přesměrování, zazálohujte si obsah tohoto adresáře z FTP.
  5. Nyní požadovaný záznam v uživatelském rozhraní smažte.

  6. Klikněte na tlačítko "Založit přesměrování".

  7. Vyplňte url adresu s přesměrováním. U subdomén (domén III řádu) doplňte také její název. Url adresa podporuje přesměrování pouze na adresář např. na http://sempresmeruj.cz nikoliv na http://sempresmeruj.cz/soubor.php - ve webovém prohlížeči se toto zadání projeví doplněním lomítka v url a přesměrování nebude funkční. Pro přesměrování na soubor se proto lépe hodí předešlé řešení pomocí souboru .htaccess.
  8. Změnu nezapomeňte uložit tlačítkem "Přidat přesměrování".
  9. Po založení přesměrování se změna projeví zpravidla po několika minutách. Může to trvat, ale déle v závislosti na replikaci DNS záznamů, které se nově v DNS vytvořily.
  10. Záznamy s přesměrováním můžete na záložce "WWW+FTP" kdykoliv editovat nebo také smazat.

Obnovení provozu z přesměrování zpět do výchozího nastavení

  • V případě řešení přes .htaccess postačí řádek s redirectem nebo soubor samotný jednoduše smazat na FTP. Pokud jste si na FTP zachovali uložená data, obsah se vám bude znovu zobrazovat.
  • V případě řešení přes uživatelské rozhraní:
    1. Přihlaste se do uživatelského rozhraní.
    2. U vaší domény (viz seznam domén na "Dashboardu" nebo v menu "Domény>Správa domén") klikněte na tlačítko "Detail".
    3. Klikněte na záložku "WWW+FTP".
    4. Smažte záznam s přesměrováním.
    5. Klikněte na tlačítko "Založit doménu" nebo "Založit subdoménu".
    6. Pokud se vám založení nedaří, buď váš hostingový program neumožňuje mít založeno více doménových záznamů současně nebo máte na záložce "DNS" záložen hvězdičkový záznam (např. * 3600 IN CNAME @). Nadbytečný záznam proto na záložce "DNS" smažte.

Příklady použití .htaccess

Blokování přístupu podle IP adres

deny from 180.180.180.180 - vložením čísla IP adresy zablokujete této adrese přístup na web.
deny from 180.123 - zablokujete přístup ze všech adres, které začínají 180.123.
deny from all - zablokujete přístup ze všech IP adres.
allow from 130.130.130.130 - povolíte této IP adrese vstup na web.

Chybové stránky

ErrorDocument 403 "http://example.cz/chyba403.php"
ErrorDocument 404 "http://example.cz/chyba404.php"

Chybové stránky, které jsou společné všem doménám pod uživatelským účtem je možné nastavit také v uživatelském rozhraní a to pro kódy 403, 404, 500 a 503.

Alternativní index stránka

DirectoryIndex soubor1.php soubor2.html

Pokud nechceme jako výchozí použít soubor index.php nebo jemu podobný, vepíšeme do .htaccess řádku, na které definujeme zleva doprava pořadí, ve kterém se má soubor .htaccess pokusit nalézt výchozí soubor webu. Soubory vlevo mají tedy nejvyšší prioritu. Soubor na konci se použije jen tehdy, když nenalezne žádný předešlý soubor. Pokud nenalezne ani jeden, zobrazí se parkovací stránka hostingu. Parkovací stránku je možné definovat vlastní v uživatelském rozhraní viz menu "Domény>Globální nastavení".

Ochrana proti SPAM botům

RewriteCond %{HTTP_USER_AGENT} Wget [OR]
RewriteCond %{HTTP_USER_AGENT} CherryPickerSE [OR]
RewriteCond %{HTTP_USER_AGENT} CherryPickerElite [OR]
RewriteCond %{HTTP_USER_AGENT} EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ExtractorPro
RewriteRule ^.*$ http://www.spampoison.com/ [L]

Tento kód odhalí většinu SPAM botů, který je dále přesměruje na adresu spampoison.com.

Zapnutí Rewrite módu

RewriteEngine On

Tato řádka se zadává do .htaccess pouze jednou!

Příklad použití módu rewrite

Chceme např. přepsat url ve tvaru zápisu /index.php?stranka=news na zapamatovatelnější /news.html

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_URI} ^(.*).html
RewriteRule ^(.*).html index.php?stranka=$1 [nc,L,QSA]

Povolení výpisu adresáře

Options +Indexes

Uživatel uvidí výpis adresářů/souborů umístěných na FTP.

Zakázání výpisu adresáře

Options -Indexes

Uživatel při snaze dostat se do některého adresáře bude přesměrován na chybovou stránku 403.

Přesměrování webu bez WWW na verzi s WWW

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

Přesměrování webu s WWW na verzi bez WWW

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

Kontrola protokolu https

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Zde se ověřuje, zda při načtení url už není protokol s https a pokud není, dojde k přesměrování na url s https. Doporučujeme využít v kombinaci aktivace SSL Let's encrypt, která je k dispozici v detailu vaší domény na záložce "WWW+FTP" v uživatelském rozhraní.