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]

{{percentage}} % positiv
