htaccess SEO Tipps

5.163 Aufrufe

Veröffentlicht am

Mein Vortrag ".htaccess für Nicht-Techies" von der SEO-Campixx 2014.

Veröffentlicht in: Technologie
0 Kommentare
12 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
5.163
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1.053
Aktionen
Geteilt
0
Downloads
44
Kommentare
0
Gefällt mir
12
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

htaccess SEO Tipps

  1. 1. .htaccess für Nicht-Techies Berlin 16.03.2014 Malte Landwehr
  2. 2. Malte Landwehr https://plus.google.com/+MalteLandwehr/ http://twitter.com/maltelandwehr https://www.facebook.com/landwehr http://www.linkedin.com/in/landwehr • 2003 – now: SEO • 2007 – now: ORM • 2007 – 2014: Computer Science (BSc + MSc) • 2008 – 2010: CoFounder & Head of SEO • 2012 – 2013: Research (Social Network Analysis)
  3. 3. Was ist die .htaccess?
  4. 4. Malte Landwehr
  5. 5. Malte Landwehr HTTP_HOST seo-campixx-14.de QUERY_STRING id=test&timestamp=123 REQUEST_URI /wp-content/uploads/2010/09/reise.jpg
  6. 6. Malte Landwehr HTTP_HOST seo-campixx-14.de QUERY_STRING id=test&timestamp=123 REQUEST_URI /wp-content/uploads/2010/09/reise.jpg vom HTTP_HOST auf Ordner im Dateisystem
  7. 7. Malte Landwehr HTTP_HOST seo-campixx-14.de QUERY_STRING id=test&timestamp=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
  8. 8. Malte Landwehr HTTP_HOST seo-campixx-14.de QUERY_STRING id=test&timestamp=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. 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. 10. Malte Landwehr Was ist die .htaccess? • Konfigurationsdatei • Apache Webserver • Abarbeitung von oben nach unten • hypertext access
  11. 11. Spammer & Scraper aussperren
  12. 12. Nervt! Kommentar-SPAM
  13. 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!
  14. 14. Malte Landwehr IP-Adressen sperren Order allow,deny allow from all deny from 31.41.216.134 deny from 84.232.199.206 deny from 72.29.65.240
  15. 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
  16. 16. Ergebnis
  17. 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
  18. 18. 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
  19. 19. Malte Landwehr IP-Ranges 85 . 182 . 250 . 35 01010101 . 10110110 . 11111010 . 00011101 85 . 182 . 255. 255 /14 01010101 . 10110110 . 11****** . ******** 01010101 . 10110110 . 11000000 . 00000000 01010101 . 10110110 . 1111111111 . 11111111bis bis85 . 182 . 192 . 0 85 . 182 . 250 . 35
  20. 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. 21. Hilft auch gegen Content-Diebe! Scraper Sites Screenshot entfernt.
  22. 22. Admin-Bereich absichern (für jedes CMS!)
  23. 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/.
  24. 24. Malte Landwehr Ordner Sperre Order deny,allow allow from 192.168.0.1 deny from all
  25. 25. Malte Landwehr Order deny,allow allow from 192.168.0.1 deny from all Niemand hat Zugriff Diese IP hat Zugriff deny > allow
  26. 26. Malte Landwehr Besser • htpasswd
  27. 27. Sicherheit & Datenschutz
  28. 28. Wenn keine Index-Datei in einem Ordner liegt, soll nicht der gesamte Inhalt aufgelistet werden. • Sicherheit • Rechtliche Probleme? Screenshot entfernt.
  29. 29. Malte Landwehr Directory Listing deaktivieren Options -Indexes
  30. 30. index of name last modified size description "passwort.txt" Fun Fact: google it Screenshot entfernt.
  31. 31. Installierte Wordpress Plugins
  32. 32. Custom Fehlermeldungen
  33. 33. Malte Landwehr Problem • Ich habe „eine“ Expired Domain gekauft. • Alle 404-Fehler sollen per 301 auf die Startseite geleitet werden.
  34. 34. Malte Landwehr Custom 404 Fehler ErrorDocument 404 /redirect.php
  35. 35. Malte Landwehr Custom 404 Fehler ErrorDocument 404 /redirect.php Das auszugebende DokumentBefehl Art des Fehlers
  36. 36. Malte Landwehr redirect.php <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/"); ?>
  37. 37. Alternativen • Echter 404 Fehler • 404 im Header • Inhalt für Nutzer • Suchfunktion • Sitemap • Google Analytics
  38. 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
  39. 39. Zweierlei Redirects
  40. 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.
  41. 41. Malte Landwehr Einfacher Redirect Redirect 301 /kategorie/thema/ http://forum.example.com/thema1/thema/
  42. 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. 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. 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!
  45. 45. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php
  46. 46. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php Befehl Regulärer Ausdruck Auszuführende Datei
  47. 47. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php Anfang empfehlung.asp bel. Zeichen bel. oft Ende
  48. 48. Malte Landwehr Forward_empfehlung.php <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/empfehlungen.html"); ?>
  49. 49. Malte Landwehr Wie wird weitergeleitet? Eingabe Ergebnis /empfehlung.asp http://www.example.com/empfehlungen.html /empfehlung.asp?id=a http://www.example.com/empfehlungen.html /empfehlung.aspid=123 http://www.example.com/empfehlungen.html /empfehlung.asp?id=123&p=456 http://www.example.com/empfehlungen.html /empfehlung.aspx http://www.example.com/empfehlungen.html /empfehlung.aspx?id=123 http://www.example.com/empfehlungen.html
  50. 50. Malte Landwehr Anmerkung • Geht auch ohne PHP.
  51. 51. Mehr Page Speed
  52. 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. 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. 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. 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. 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. 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. 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. 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!
  60. 60. Malte Landwehr Regelmäßige Änderungen von Bildern • Subdomain ExpiresByType image/gif "modification plus 2 hours" statt access
  61. 61. Malte Landwehr Ergänzung • Ganzzahlige Zeiträume • seconds, minutes, hours, days, weeks, months, years • "access plus 1 month 15 days 2 hours"
  62. 62. Malte Landwehr Caching in der Wildnis (Startseiten) Zalando Amazon Ladenzeile Spiegel http://httparchive.org/websites.php
  63. 63. URLs umschreiben
  64. 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. 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. 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. 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. 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. 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
  70. 70. Standard-Domain
  71. 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.
  72. 72. Malte Landwehr Standard-Domain RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
  73. 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. 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
  75. 75. Malte Landwehr Standard-Domain RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] Nicht Anfang www.example.com Ende
  76. 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
  77. 77. PHP-Code in .html-Dateien
  78. 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.
  79. 79. Malte Landwehr PHP-Code in .HTML-Dateien AddType application/x-httpd-php .php .html .htm
  80. 80. Malte Landwehr PHP-Code in .HTML-Dateien AddType application/x-httpd-php .php .html .htm PHP-Code ausführen in diesen Datei-Endungen
  81. 81. .jpeg .jpg .png .gif .css Anmerkung II Screenshot entfernt.
  82. 82. Canonical für PDF & Co
  83. 83. Malte Landwehr Canonical für ein PDF <Files druckansicht.pdf> Header append Link "<http://www.example.omc/artikel.html>; rel="canonical"" </Files>
  84. 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
  85. 85. Malte Landwehr Ergebnis http://web-sniffer.net/
  86. 86. Tools
  87. 87. .htaccess Editor http://www.htaccesseditor.com/gr.shtml • Gut zum Rumspielen • Nie blind vertrauen
  88. 88. SEO Tools ärgern Screenshot entfernt.
  89. 89. Danke für Eure Aufmerksamkeit Q&A

×