• Like
  • Save
htaccess SEO Tipps
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

htaccess SEO Tipps

  • 3,685 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,685
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
44
Comments
0
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. .htaccess für Nicht-Techies Berlin 16.03.2014 Malte Landwehr
  • 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. Was ist die .htaccess?
  • 4. Malte Landwehr
  • 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. 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. 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. 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. 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
  • 11. Spammer & Scraper aussperren
  • 12. Nervt! Kommentar-SPAM
  • 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. 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. 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. Ergebnis
  • 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. 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. 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. 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.
  • 22. Admin-Bereich absichern (für jedes CMS!)
  • 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. Malte Landwehr Ordner Sperre Order deny,allow allow from 192.168.0.1 deny from all
  • 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. Malte Landwehr Besser • htpasswd
  • 27. Sicherheit & Datenschutz
  • 28. Wenn keine Index-Datei in einem Ordner liegt, soll nicht der gesamte Inhalt aufgelistet werden. • Sicherheit • Rechtliche Probleme? Screenshot entfernt.
  • 29. Malte Landwehr Directory Listing deaktivieren Options -Indexes
  • 30. index of name last modified size description "passwort.txt" Fun Fact: google it Screenshot entfernt.
  • 31. Installierte Wordpress Plugins
  • 32. Custom Fehlermeldungen
  • 33. Malte Landwehr Problem • Ich habe „eine“ Expired Domain gekauft. • Alle 404-Fehler sollen per 301 auf die Startseite geleitet werden.
  • 34. Malte Landwehr Custom 404 Fehler ErrorDocument 404 /redirect.php
  • 35. Malte Landwehr Custom 404 Fehler ErrorDocument 404 /redirect.php Das auszugebende DokumentBefehl Art des Fehlers
  • 36. Malte Landwehr redirect.php <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/"); ?>
  • 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
  • 39. Zweierlei Redirects
  • 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. Malte Landwehr Einfacher Redirect Redirect 301 /kategorie/thema/ http://forum.example.com/thema1/thema/
  • 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!
  • 45. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php
  • 46. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php Befehl Regulärer Ausdruck Auszuführende Datei
  • 47. Malte Landwehr Dynamischer Redirect RewriteEngine On RewriteRule (^empfehlung.asp(.*)$) forward_empfehlung.php Anfang empfehlung.asp bel. Zeichen bel. oft Ende
  • 48. Malte Landwehr Forward_empfehlung.php <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/empfehlungen.html"); ?>
  • 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. Malte Landwehr Anmerkung • Geht auch ohne PHP.
  • 51. Mehr Page Speed
  • 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!
  • 60. Malte Landwehr Regelmäßige Änderungen von Bildern • Subdomain ExpiresByType image/gif "modification plus 2 hours" statt access
  • 61. Malte Landwehr Ergänzung • Ganzzahlige Zeiträume • seconds, minutes, hours, days, weeks, months, years • "access plus 1 month 15 days 2 hours"
  • 62. Malte Landwehr Caching in der Wildnis (Startseiten) Zalando Amazon Ladenzeile Spiegel http://httparchive.org/websites.php
  • 63. URLs umschreiben
  • 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
  • 70. Standard-Domain
  • 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. Malte Landwehr Standard-Domain RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
  • 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
  • 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. 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. PHP-Code in .html-Dateien
  • 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. Malte Landwehr PHP-Code in .HTML-Dateien AddType application/x-httpd-php .php .html .htm
  • 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. .jpeg .jpg .png .gif .css Anmerkung II Screenshot entfernt.
  • 82. Canonical für PDF & Co
  • 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
  • 85. Malte Landwehr Ergebnis http://web-sniffer.net/
  • 86. Tools
  • 87. .htaccess Editor http://www.htaccesseditor.com/gr.shtml • Gut zum Rumspielen • Nie blind vertrauen
  • 88. SEO Tools ärgern Screenshot entfernt.
  • 89. Danke für Eure Aufmerksamkeit Q&A