Apache htaccess - Beispiele

 

Mit Hilfe der .htaccess-Datei kann der Zugriff auf einen Apache Webserver gesteuert werden. Dazu reicht es eine Textdatei mit den Namen .htaccess in einem veröffentlichten Ordner am Webserver anzulegen und mit entsprechenden Regeln zu befüllen.

ModRewrite

ModRewrite ermöglicht es verschieden URL-Pfade für den Aufruf zu verwenden, als Beispiel die Verwendung einer index.php-Datei ohne diese im Aufruf angeben zu müssen:

Aufruf im Browser: URL/page1

ModRewrite kann den Aufruf am Server auf z.B.: index.php?page=page1 umwandeln. Die index.php bekommt dann normale GET-Parameter (hier page) übergeben.

ModRewrite kann wie folgt in der Datei .htaccess aktiviert werden:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
...

Ob ModRewrite aktiv wird, lässt sich über Conditions steuern:

Conditions

Leerer Query-String, also kein ?.. an der URL:

RewriteCond %{REQUEST_URI} ^/?$

Testen ob ein Cookie vorhanden ist:

RewriteCond %{HTTP_COOKIE} !COOKIENAME=COOKIEVALUE; [NC]

Testen ob eine Datei vorhanden ist

RewriteCond %{DOCUMENT_ROOT}/index.htm -f

Rule

RewriteRule .? page-cache/pc__index__pc.html [L]

Beispiele

Index.php entfernen

RewriteRule ^(.*)$ index.php?/$1 [L] 

index.php entfernen und Ausnahmen, sowie search Variable. Beispiel für cms.libe.net:

DirectorySlash Off 
RewriteCond %{REQUEST_URI} !^/login.php$ [NC] 
RewriteCond %{REQUEST_URI} !^/rss.php$ [NC] 
RewriteCond %{REQUEST_URI} !^/robots.txt$ [NC] 
RewriteCond %{REQUEST_URI} !^/favicon.ico$ [NC] 
RewriteCond %{REQUEST_URI} !^/plugins/.*$ [NC] 
RewriteCond %{REQUEST_URI} !^/image/.*$ [NC] 
RewriteCond %{REQUEST_URI} !^/admin/.*$ [NC] 
RewriteCond %{REQUEST_URI} !^/template/.*$ [NC] 
RewriteCond %{REQUEST_URI} !search/ [NC] 
RewriteCond %{REQUEST_URI} !^/download/.*$ [NC] 
RewriteCond %{REQUEST_URI} !^/dev/tmpdata/.*$ [NC] 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteRule ^search(.*)$ index.php/search/$2 [L]

Umleitung von http auf https:

Header set Strict-Transport-Security "max-age=10886400"
#rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Bestimmten Ordner erlauben und bestimmte IP

SetEnvIf Request_URI ^/.well-known noauth=1
Order deny,allow
Deny from all
Require valid-user
Allow from ???.???.???.???
Allow from env=noauth
Satisfy Any 

Bestimmtes File erlauben

Deny from all
<Files ~ "\.php$">
Order allow,deny
Deny from all
</Files>
<Files allowguest.php>
Order Allow,Deny
Allow from all
</Files>
# directory browsing
Options All -Indexes

.htpasswd-Datei erzeugen

Eine.htpasswd-Datei für eine Basic-Authentifizierung kann unter Linux mit folgendem Befehl erstellt werden: 

htpasswd -c .htpasswd testusr

ModRewrite und bestimmten Ordner erlauben (Laravel)

SetEnvIf Request_URI ^/.well-known noauth
SetEnvIf Request_URI ^/(api|index\.php) noauth2
AuthType Basic
AuthName "Zugriff verweigert "
AuthUserFile .htpasswd
Order deny,allow
Deny from all
Require valid-user
Allow from env=noauth
Allow from env=noauth2
Satisfy Any 

Direkten Zugriff auf einen Ordner verbieten

                RewriteCond %{REQUEST_URI} ^/page-cache/
                RewriteCond %{ENV:REDIRECT_STATUS} ^$
            RewriteRule ^page-cache/ - [F]

einen Ordner mit einem Passwort schützen

AuthType Basic
AuthName "bitte das Passwort eingeben"
AuthUserFile ../../.htpasswd
Require valid-user

nicht www Domänen auf www. umleiten

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

Falls in der URL eine index.php vorkommt, auf die URL ohne index.php umleiten

    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare