8. Malte Landwehr
HTTP_HOST seo-campixx-14.de
QUERY_STRING id=test×tamp=123
REQUEST_URI /wp-content/uploads/2010/09/reise.jpg
vom HTTP_HOST auf
Ordner im Dateisystem
Im Ordner nach Datei
aus REQUEST_URI
suchen
QUERY_STRING an
Datei übergeben
9. Malte Landwehr
vom HTTP_HOST auf
Ordner im Dateisystem
Im Ordner nach Datei
aus REQUEST_URI
suchen
QUERY_STRING an
Datei übergeben
In .htaccess des Ordners (sowie
aller übergeordneter Ordner)
schauen und passende Befehle
ausführen. Dadurch können u.U.
komplett neue Requests
entstehen.
10. Malte Landwehr
Was ist die .htaccess?
• Konfigurationsdatei
• Apache Webserver
• Abarbeitung von oben nach unten
• hypertext access
13. Malte Landwehr
Problem
• Mein Forum wird regelmäßig mit Kommentaren
zugespammt.
• Die Spammer kommen oft von den gleichen IP-
Adresse:
– 31.41.216.134 (Ukraine)
– 84.232.199.206 (Rumänien)
Alle IP-Adressen sind zufällige Beispiele!
15. Malte Landwehr
Order allow,deny
allow from all
deny from 31.41.216.134
deny from 84.232.199.206
deny from 72.29.65.240
Diese IP-Adressen haben keinen Zugriff
allow > deny
Jeder hat Zugriff
17. Malte Landwehr
Anmerkung
• Befehle werden nicht in der Reihenfolge
ausgeführt, in der sie da stehen!
• „Fixed“ in Apache 2.4
– “Controling how and in what order authorization will be
applied has been a bit of a mystery in the past”
– RequireAll
– RequireAny
– RequireNone
20. Malte Landwehr
IP-Ranges
deny from 5.100.192.0/14
deny from 31.24.88.0/21
deny from 37.17.0.0/17
deny from 37.44.64.0/18
http://incredibill.me/htaccess-block-country-ips
21. Hilft auch gegen Content-Diebe!
Scraper Sites
Screenshot entfernt.
23. Malte Landwehr
Problem
• Ich habe unter /wp-admin/ einen
Bereich, in den nur ich mich einloggen
können soll.
• Ich nutze dafür die .htaccess im
Ordner /wp-admin/.
28. Wenn keine Index-Datei in einem Ordner liegt, soll
nicht der gesamte Inhalt aufgelistet werden.
• Sicherheit
• Rechtliche Probleme?
Screenshot entfernt.
37. Alternativen
• Echter 404 Fehler
• 404 im Header
• Inhalt für Nutzer
• Suchfunktion
• Sitemap
• Google Analytics
38. Malte Landwehr
Neil Patel über 404-Fehlerseiten
http://www.quicksprout.com/2013/12/04/11-seo-changes-that-will-give-you-big-results/
• I create custom ones that display a
creative image […] also links out
to 25 to 50 random internal pages
• each time the 404 error page is
loaded, the links automatically change
• increase the number of pages that get indexed
• TechCrunch: +9% search engine traffic in 30 days
40. Malte Landwehr
Problem I
• Die URL-Struktur meiner Website hat sich
geändert.
• Beim Aufruf der alten URL
http://example.com/kategorie/thema/
soll auf die neue URL
http://forum.example.com/thema1/thema/
weitergeleitet werden.
42. Malte Landwehr
Einfacher Redirect
Redirect 301 /kategorie/thema/ http://forum.example.com/thema1/thema/
Befehl
Art der Weiterleitung
Alte URL
(relativ!)
Neue URL
(absolut!)
Art der Weiterleitung
43. Malte Landwehr
Wie wird weitergeleitet?
Eingabe Ergebnis
/kategorie/thema/ http://forum.example.com/thema1/thema/
/kategorie/thema/a http://forum.example.com/thema1/thema/a
/kategorie/thema/?id=a http://forum.example.com/thema1/thema/?id=a
/kategorie/them n/a
/kategorie/ n/a
44. Malte Landwehr
Problem II
• Alle Aufrufe der Form
/empfehlungen.asp?id=123&page=456
oder
/empfehlungen.asp?id=666&page=42
sollen auf
/empfehlungen.html
weitergeleitet werden.
• Alle Parameter sollen abgeschnitten werden!
52. Malte Landwehr
Browser-Caching
• Anweisung an den Client:
Diese statische Datei musst du für den
Zeitraum x nicht erneut anfragen.
• Weniger Traffic
• Bessere Ladezeit
• Bessere Page Speed-Bewertung
53. <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access 1 month”
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
54. <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access 1 month”
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
Optional: Der Code wird
nur ausgeführt, wenn das
Modul mod_expires zur
Verfügung steht
55. <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access 1 month”
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
Aktiviert den
Expires-Bereich
56. <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month„
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access 1 month”
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
Befehl
Datei-Typ
Zugriff als Basis
Zeitraum
(wird zur Basis addiert)
57. Malte Landwehr
Auswirkung auf Page Speed
http://developers.google.com/speed/pagespeed/insights/
76
78
80
82
84
86
88
90
Mobile Desktop
Ohne Browser-Caching
Ohne Browser-Caching
58. Malte Landwehr
Auswirkung auf Page Speed
http://developers.google.com/speed/pagespeed/insights/
70
75
80
85
90
95
100
Mobile Desktop
Ohne Browser-Caching Mit Browser-Caching
59. Malte Landwehr
Achtung bei Relaunch!
• 1 Monat vorher auf 1 Woche setzen
• 1 Woche vorher auf 1 Tag setzen
• 1 Tag vorher auf 1 Stunde setzen
• 1 Stunde vorher deaktivieren
• Nach Relaunch erst mal deaktiviert lassen,
falls es unerwartete Probleme gibt!
64. Malte Landwehr
Problem
• Wenn im Browser /user-123.html
aufgerufen wird, soll der Inhalt von
/profile.php?userid=123 angezeigt werden.
• In der Adresszeile des Browsers soll
weiterhin /user-123.html stehen!
65. Malte Landwehr
URLs umschreiben
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} /user-([0-9]*).html
RewriteRule (.*) /profile.php?userid=%1 [L]
Achtung: Code ist nicht optimal, da nicht defensiv genug!
66. Malte Landwehr
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} /user-([0-9]*).html
RewriteRule (.*) /profile.php?userid=%1 [L]
Aktiviert den
Rewrite-Bereich
Zu erfüllende
Bedingung
Auszuführende Regel
67. Malte Landwehr
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} /user-([0-9]*).html
RewriteRule (.*) /profile.php?userid=%1 [L]
Rewrite
Bedingung
Dateipfad und -name
der aufgerufenen URL
Regulärer
Ausdruck
68. Malte Landwehr
URLs umschreiben
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} /user-([0-9]*).html
RewriteRule (.*) /profile.php?userid=%1 [L]
/user-
Beliebig viele Ziffern
(kann später referenziert werden)
.html
69. Malte Landwehr
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} /user-([0-9]*).html
RewriteRule ^(.*)$ /profile.php?userid=%1 [L]
Rewrite
Regel
Regulärer
Ausdruck
/profile.php?userid=
Referenz
Flag
71. Malte Landwehr
Problem
• Beim Aufruf von example.com soll auf
www.example.com weitergeleitet
werden.
• Der URL-Pfad soll erhalten bleiben,
also z.B. example.com/a/1.html soll
auf www.example.com/a/1.html
zeigen.
73. Malte Landwehr
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Aktiviert den
Rewrite-Bereich
Zu erfüllende
Bedingung
Auszuführende Regel
74. Malte Landwehr
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Rewrite
Bedingung
Host der aufgerufenen URL
Regulärer
Ausdruck
76. Malte Landwehr
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Rewrite
Regel
Regulärer
Ausdruck
www.example.com
Flags:
• L: Keine weiteren Regeln
• R: Art der Weiterleitung
78. Malte Landwehr
PHP-Code in .HTML-Dateien
• PHP-Code wird normalerweise nur in .php
Dateien ausgeführt.
• Statische Websites mit hunderten von
.html-Dateien übernommen.
• Kleines PHP-Script ergänzen, das
bestimmte Inhalte dynamisch lädt.
83. Malte Landwehr
Canonical für ein PDF
<Files druckansicht.pdf>
Header append Link "<http://www.example.omc/artikel.html>; rel="canonical""
</Files>
84. Malte Landwehr
Canonical für ein PDF
<Files druckansicht.pdf>
Header append Link "<http://www.example.com/artikel.html>; rel="canonical""
</Files>
Attribut
Alternativ: FilesMatch
Befehl