Jakub Szulgan

WordPress Developer

Programowanie to moja praca i pasja. Zawsze dążę do czystego kodu i perfekcji UX. Ten blog to moja baza wiedzy...
backup mojego mózgu ...
Opus Magnum.

Przed wprowadzaniem kolejnych linijek kodu można sprawdzić czy w ogóle to poprawny i działający plik .htaccess.Aby to sprawdzić dodaj taki kod:


Header set CODEBOOK-TEST "I'm Alive"

Sprawdzenie czy jest kod wyświetlany:

  • Uruchamiamy narzędzie inspektor kodu w przeglądarce
  • Przechodzimy do zakłądki Network
  • W poziomym menu wybieramy All i odświerzamy naszą stronę F5
  • Wybieramy z zakładki name nazwe naszej strony np dla mojej strony głównej to bedzie codebook.pl
  • W zakłądce Headers szukamy wpis CODEBOOK-TEST: „I’m Alive”

Jak znaleźliśmy CODEBOOK-TEST: „I’m Alive”, to jesteśmy w dobrym miejscu i wszystko działa.

W innym przypadku polecam poszukać pliku .htaccess w katalogu wyżej lub w katalogu private_html.

Wybierz z listy co Ciebie interesuje:

  • Podstawowe przekierowania
  • przekierowanie domeny na inną domenę

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    
    RewriteRule ^(.*)$ https://nazwa-domeny.pl/$1 [R=301,L]
    
    
  • przekierowanie z http na https

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://nazwa-domeny.pl%{REQUEST_URI} [L,R=301]
    
    
  • przekierowanie z https na http

    Przekierowanie działa, ale tylko dla maszynek do sprawdzania. Przeglądarka na początku sama sprawdza czy strona ma certyfikat. W takim przypadku dostajemy strony z ostrzerzeniem i tylko tyle.

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTPS} on
    RewriteRule (.*) http://nazwa-domeny.pl/$1 [R=301,L]
    
    

    A jeśli nie zadziała, można spróbować tego:

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP:X-Forwarded-Proto} =https
    RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    
  • przekierowanie z www na bez www

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^(.*)$ https://nazwa-domeny.pl/$1 [R=301,L]
    
    
  • przekierowanie z bez www na www

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ https://www.nazwa-domeny.pl/$1 [R=301,L]
    
    
  • przekierowanie na adres bez ukośnika ( slash / ) na końcu

    Pamiętaj :

    • zmień nazwa-domeny.pl na własną domenę
    • podaj poprawną nazwę domeny, jeśli ma na początku www to podaj www.nazwa.domeny.pl
    • podaj poprawną wersję strony – z certyfikatem SSL https:// lub bez http://
    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    
  • przekierowanie na adres z ukośnikiem ( slash / ) na końcu

    Pamiętaj :

    • zmień nazwa-domeny.pl na własną domenę
    • podaj poprawną nazwę domeny, jeśli ma na początku www to podaj www.nazwa.domeny.pl
    • podaj poprawną wersję strony – z certyfikatem SSL https:// lub bez http://
    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
    
    
  • Zabawy z index.php
  • przekierowanie z index.php na /

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} index\.php
    RewriteRule ^index\.php$  https://nazwa-domeny.pl/ [R=301,L]
    
    
  • usuwanie z URL kawałka /index.php/

    
    
    RewriteEngine On
    RewriteBase /
    
    REQUEST_URI} ^/index\.php/
    RewriteRule ^index.php/(.*) /$1 [R,L]
    
    
  • Nałożenie na strony 410 gone
  • 410 gone na wybranej frazy

    W miejscu gone-phrase proszę wpisać własną frazę jaka ma być wyszukana. Wszystkie adresy zawierające tą frazę będą miały ustawiony 410.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} gone-phrase
    RewriteRule ^(.*)$ - [G]
    
    
  • 410 gone na wybrane strony

    W miejscu gone-url proszę wpisać własny adres URI, czyli to co po domenie.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^gone-url$ - [G,L]
    
    
  • 410 na adresy, które zaczynają się na string

    W miejscu string proszę wpisać własny początek adresu URI.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^string(.*)$ - [G,L]
    
    
  • Nałożenie noindex
  • noindex dla wybranego adresu url

    W miejscu noindex-url proszę wpisać własny adres URI, czyli to co po domenie.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^noindex-url$ - [E=NOINDEX_HEADER:1]
    Header Set X-Robots-Tag "noindex, nofollow" ENV=REDIRECT_NOINDEX_HEADER
    
    
  • noindex dla wybranej frazy

    W miejscu noindex-phrase proszę wpisać własną frazę jaka ma być wyszukana. Wszystkie adresy zawierające tą frazę będą miały ustawiony noindex.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{QUERY_STRING} noindex-phrase
    RewriteRule .* - [E=NOINDEX_HEADER:1]
    Header Set X-Robots-Tag "noindex, nofollow" ENV=REDIRECT_NOINDEX_HEADER
    
    
  • noindex na pliki z rozszerzeniem .pdf, .png, .gif, .jpg

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    
    Header set X-Robots-Tag "noindex, nofollow"
    
    
    
  • noindex na schemat paginacji typu /nazwa,5.html

    W miejscu ,[0-9]+.html$ proszę wpisać końcówkę paginacji jaka jest do oznaczenia jako noindex.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{QUERY_STRING} ,[0-9]+.html$
    RewriteRule .* - [E=NOINDEX_HEADER:1]
    Header Set X-Robots-Tag "noindex, nofollow" ENV=REDIRECT_NOINDEX_HEADER
    
    
  • Tworzenie przyjaznych linków dla .html i .php
  • przekierowanie z /plik.html na /plik oraz zaczytanie treści z plik.html

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.+)$ $1.html [L,QSA]
      
    RewriteCond %{REQUEST_URI} \.html$
    RewriteRule (.*)\.html$ /$1 [R,L]
    
    
    

    lub

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} ^/(.+)\.html?$ [nocase]
    RewriteRule ^ /%1 [L,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f 
    RewriteRule ^ %{REQUEST_URI}.html [END]
    
    
  • przekierowanie z /plik.php na /plik oraz zaczytanie treści z plik.php

    
    
    RewriteEngine On
    RewriteBase /
    
    #przekierowanie plik.php /plik 
    RewriteRule ^(.*)\.php/?$ $1 [R=301,L]
    
    #Kiedy URL jest bez .php to podaje treść pliku plik.php
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php
    
    
  • Szczególne przypadki
  • wykluczenie z reguły konkretnego katalogu

    Przekierowanie slash z wyłączeniem katalogu

    W miejscu specific-uri proszę wpisać URL,który ma być pominięty (np. URL do panelu administracyjnego).

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} !^/specific-uri/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    
  • przekierowanie wszystkich subdomen (wraz z www. ) na domenę główną

    W miejscu nazwa-domeny.pl proszę wpisać własną domenę.

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} !^nazwa-domeny.pl [NC] 
    RewriteRule ^(.*)$ https://nazwa-domeny.pl%{REQUEST_URI} [R=301,L]
    
    
  • pozbycie się wszystkiego po ? np nazwa-domeny.pl/cos?cos

    
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} \s/(.*)\.html\?(.*)\s [NC]
    RewriteRule ^(.*)$ https://nazwa-domeny.pl/%1.html? [R=301,NC,L]
    
    
  • Blokowanie wyświetlania zawartości katalogów

    Aby zablokować podglądanie zawartości katalogów na serwerze należy ten kod umieścić w htaccess:

    
    Options -Indexes
    

    Aby zezwolić podglądanie zawartości katalogów na serwerze należy ten kod umieścić w htaccess:

    
    Options +Indexes
    
  • Blokowanie dostępu do strony po IP

    Aby zablokować podglądanie zawartości strony z określonego IP XXX.XXX.XXX.XXX należy ten kod umieścić w htaccess:

    
    order allow, deny
    deny from XXX.XXX.XXX.XXX
    allow from all
    
  • Zezwalanie na dostęp z określonego IP

    Aby zezwolić podglądanie zawartości strony z określonego IP XXX.XXX.XXX.XXX należy ten kod umieścić w htaccess:

    
    deny from all
    allow from XXX.XXX.XXX.XXX
    
  • Kiedy w URL są dziwne znaki w środku np %

    Tam, gdzie są dziwne znaki, nie wpisujemy ich. Zamiast tego używamy /(.*).

    Tu przykład:

    
    RewriteRule ^custom-url/(.*)page(.*)/some/custom/?$ https://nazwa.pl [R=301,L]