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!

Ver√∂ffentlichung: 02.03.2021 von Bernhard |ūüĒĒ | Kommentare:0

‚ě® Bash Funktion und Logging f√ľr ein rsync-Backup-Script | ‚ě¶ Linux Bash | Git ohne GitHub ‚ě®

Fragen / Kommentare