Skip to main content

Praktické tipy pro konfiguraci

.htaccess soubory

V direktivě Directory uvnitř definice VirtualHost je potřeba specifikovat AllowOverride All pro adresář (tím bude aplikováno i na podsložky).

        <Directory /var/www/html>
          AllowOverride All
        </Directory>

Syntaxe: AllowOverride All|None|directive-type [directive-type] ...
Výchozí: AllowOverride None (2.3.9 and later), AllowOverride All (2.3.8 and earlier)

🗒️ When this directive is set to None and AllowOverrideList is set to None, .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.
When this directive is set to All, then any directive which has the .htaccess Context is allowed in .htaccess files.
🔗 oficiální dokumentace

⚠️ Je nutné mít zaregistrovaný rewite modul: a2enmod rewrite.

Přesměrování

V tomto příkladu máme DocumentRoot nastaven do /var/www/html a nastavujeme soubor /var/www/html/.htaccess. Adresa https://mujfancyweb.cz/info bude přesměrována na https://mujfancyweb.cz/login/entra?info=json:

RewriteEngine on
RewriteRule ^info "/login/entra?info=json" [R]

💡 Flag [R] nám říká že se to má přesměrovat viz dokumentaci.
⚠️ Pozor na oprávnění souboru při editaci, měl by to vlastnit www-data pokud systém nění nějak zprzněn 😅. Je nutné mít zaregistrovaný rewite modul: a2enmod rewrite.

Automatické přesměrování HTTP > HTTPS

ℹ️ Pro přesměrování určité domény a ne celého webserveru odkomentovat a upravit RewriteCond %{SERVER_NAME} = ...

# Stolen with love from https://community.letsencrypt.org/t/disable-port-80-and-leave-only-443/27821/2

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

<VirtualHost *:80>
        RewriteEngine on
        #RewriteCond %{SERVER_NAME} wiki.cvut.it
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>