Ankündigung

Einklappen
Keine Ankündigung bisher.

Die ultimative htaccess - Webseiten Security

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Die ultimative htaccess - Webseiten Security

    Sodele,
    ich dokumentiere mal was ganz gut ist in Sachen Webseiten Security und .htaccess möglich ist.
    Könnt gerne euer Feedback geben bzw Fragen stellen. Über die Htaccess kann man schon einiges im Hinblick auf Sicherheit machen. Ich fang einfach mal an mit einer "einfachen" Variante, die auf den meisten Webhosting Paketen laufen sollte. Also nicht nur bei SEO-NW

    Ein wenig versuche ich das auch zu dokumentieren. Bei Fragen einfach Fragen. Wer das hochlädt, sollte ein Backup seiner alten htaccess machen und bei einem Server Error in die Logs schauen. Eine erweiterte htaccess stelle ich bei gelegenheit auch zur Verfügung. Diese funktioniert allerdings nicht bei jedem Webhoster!

    Sodele da ist se:


    Code:
    ##### RewriteEngine enabled - BEGIN
    RewriteEngine On
    ##### RewriteEngine enabled - END
    
    ##### RewriteBase set - BEGIN
    RewriteBase /
    ##### RewriteBase set - END
    
    ##### HTTP to HTTPS redirection
    ## Since you have enabled HSTS the first redirection rule will instruct the browser to visit the HTTPS version of your
    ## site. This prevents unsafe redirections through HTTP.
    RewriteCond %{HTTPS} !=on [OR]
    RewriteCond %{HTTP:X-Forwarded-Proto} =http
    RewriteRule .* https://seo-nw.de%{REQUEST_URI} [L,R=301]
    
    ##### Custom Rules (Top of File) -- BEGIN
    # Deflate Compression by FileType
    <IfModule mod_deflate.c>
     AddOutputFilterByType DEFLATE text/plain
     AddOutputFilterByType DEFLATE text/html
     AddOutputFilterByType DEFLATE text/xml
     AddOutputFilterByType DEFLATE text/css
     AddOutputFilterByType DEFLATE text/javascript
     AddOutputFilterByType DEFLATE application/xml
     AddOutputFilterByType DEFLATE application/xhtml+xml
     AddOutputFilterByType DEFLATE application/rss+xml
     AddOutputFilterByType DEFLATE application/atom_xml
     AddOutputFilterByType DEFLATE application/javascript
     AddOutputFilterByType DEFLATE application/x-javascript
     AddOutputFilterByType DEFLATE application/x-shockwave-flash
    </IfModule>
    
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType application/x-javascript A1209600
        ExpiresByType text/javascript A1209600
        ExpiresByType application/javascript A1209600
        ExpiresByType text/css A31536000
        ExpiresByType image/x-icon A2592000
        ExpiresByType image/icon A2592000
        ExpiresByType application/x-ico A2592000
        ExpiresByType application/ico A2592000
        ExpiresByType image/gif A2592000
        ExpiresByType image/jpeg A1209600
        ExpiresByType image/jpg A1209600
        ExpiresByType image/png A1209600
        ExpiresByType application/x-shockwave-flash A1209600
        ExpiresByType font/ttf A2592000
        ExpiresByType font/otf A2592000
        ExpiresByType font/x-woff A2592000
        ExpiresByType image/svg+xml A2592000
        ExpiresByType font/truetype A2592000
        ExpiresByType font/opentype A2592000
        ExpiresByType application/x-font-woff A2592000
        ExpiresByType application/vnd.ms-fontobject A2592000
    </IfModule>
    
    <IfModule mod_headers.c>
        Header set Connection keep-alive
        <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
            Header set Cache-Control "max-age=2592000, public"
        </filesmatch>
        <filesmatch "\.(jpg|jpeg|png)$">
            Header set Cache-Control "max-age=1209600, public"
        </filesmatch>
        <filesmatch "\.(eot|woff|otf|ttf|svg)$">
            Header set Cache-Control "max-age=2592000, public"
        </filesmatch>
        # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching
        <filesmatch "\.(css)$">
            Header set Cache-Control "max-age=31536000, private"
        </filesmatch>
        <filesmatch "\.(js)$">
            Header set Cache-Control "max-age=1209600, private"
        </filesmatch>
    </IfModule>
    
    ##### Custom Rules (Top of File) -- END
    
    ##### File execution order -- BEGIN
    DirectoryIndex index.php index.html
    ##### File execution order -- END
    
    ##### No directory listings -- BEGIN
    IndexIgnore *
    Options -Indexes
    ##### No directory listings -- END
    
    ##### Redirect index.php to / -- BEGIN
    RewriteCond %{THE_REQUEST} !^POST
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
    RewriteRule ^index\.php$ http%2://seo-nw.de/ [R=301,L]
    ##### Redirect index.php to / -- END
    ##### Redirect www to non-www -- BEGIN
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    ##### Redirect www to non-www -- END
    
    ##### Rewrite rules to block out some common exploits -- BEGIN
    RewriteCond %{QUERY_STRING} proc/self/environ [OR]
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
    RewriteCond %{QUERY_STRING} base64_(en|de)code\(.*\) [OR]
    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    RewriteRule .* index.php [F]
    ##### Rewrite rules to block out some common exploits -- END
    ##### File injection protection -- BEGIN
    RewriteCond %{REQUEST_METHOD} GET
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http[s]?:// [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
    RewriteRule .* - [F]
    ##### File injection protection -- END
    
    ##### Advanced server protection rules exceptions -- BEGIN Nur fuer Joomla!
    
    RewriteRule ^administrator\/components\/com_joomlaupdate\/restore\.php$ - [L]
    RewriteRule ^templates\/your_template_name_here/ - [L]
    ##### Advanced server protection rules exceptions -- END
    
    ##### Advanced server protection -- BEGIN
    
    RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC]
    RewriteRule .* - [F]
    ## Back-end protection
    RewriteRule ^administrator/?$ - [L]
    RewriteRule ^administrator/index\.(php|html?)$ - [L]
    RewriteRule ^administrator/index[23]\.php$ - [L]
    RewriteRule ^administrator/(components|modules|templates|images|plugins)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|htm|ttf|woff|woff2|eot|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT)$ - [L]
    RewriteRule ^administrator/ - [F]
    ## Allow limited access for certain Joomla! system directories with client-accessible content
    RewriteRule ^(components|modules|templates|images|plugins|media|libraries|media/jui/fonts)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|ico|htm|ttf|woff|woff2|eot|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT)$ - [L]
    RewriteRule ^(components|modules|templates|images|plugins|media|libraries|media/jui/fonts)/ - [F]
    ## Disallow front-end access for certain Joomla! system directories (unless access to their files is allowed above)
    RewriteRule ^includes/js/ - [L]
    RewriteRule ^(cache|includes|language|logs|log|tmp)/ - [F]
    RewriteRule ^(configuration\.php|CONTRIBUTING\.md|htaccess\.txt|joomla\.xml|LICENSE\.txt|phpunit\.xml|README\.txt|web\.config\.txt) - [F]
    
    ## Disallow access to rogue PHP files throughout the site, unless they are explicitly allowed
    RewriteCond %{REQUEST_FILENAME} (\.php)$
    RewriteCond %{REQUEST_FILENAME} !(/index[23]?\.php)$
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule (.*\.php)$ - [F]
    ## Disallow access to htaccess.txt, php.ini and configuration.php-dist
    RewriteRule ^(htaccess\.txt|configuration\.php-dist|php\.ini)$ - [F]
    ## Protect against clickjacking
    <IfModule mod_headers.c>
    
        Header always append X-Frame-Options SAMEORIGIN
    
        # The `X-Frame-Options` response header should be send only for
        # HTML documents and not for the other resources.
    
        <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
            Header unset X-Frame-Options
        </FilesMatch>
    
    </IfModule>
    ## Reduce MIME type security risks
    <IfModule mod_headers.c>
        Header set X-Content-Type-Options "nosniff"
    </IfModule>
    ## Reflected XSS prevention
    <IfModule mod_headers.c>
    Header set X-XSS-Protection "1; mode=block"
    </IfModule>
    
    # mod_headers cannot match based on the content-type, however,
    # the X-XSS-Protection response header should be send only for
    # HTML documents and not for the other resources.
    
    <IfModule mod_headers.c>
        <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
            Header unset X-XSS-Protection
        </FilesMatch>
    </IfModule>
    ## Remove Apache and PHP version signature
    <IfModule mod_headers.c>
        Header unset X-Powered-By
    </IfModule>
    
    ServerSignature Off
    ## Prevent content transformation
    <IfModule mod_headers.c>
        Header merge Cache-Control "no-transform"
    </IfModule>
    ##### Advanced server protection -- END
    
    ## HSTS Header - See http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
    <IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
    </IfModule>
    ## Set the UTF-8 character set as the default
    #  Serve all resources labeled as `text/html` or `text/plain`
    #  with the media type `charset` parameter set to `UTF-8`.
    
    AddDefaultCharset utf-8
    
    # Serve the following file types with the media type `charset`
    # parameter set to `UTF-8`.
    #
    # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset
    
    <IfModule mod_mime.c>
        AddCharset utf-8 .atom \
                         .bbaw \
                         .css \
                         .geojson \
                         .js \
                         .json \
                         .jsonld \
                         .rdf \
                         .rss \
                         .topojson \
                         .vtt \
                         .webapp \
                         .xloc \
                         .xml
    </IfModule>
    ##### Joomla! core SEF Section -- BEGIN
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/index\.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]
    ##### Joomla! core SEF Section -- END

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare

    Support 24h Bereitschaft 01522 9406036- NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

  • #2
    Sodele. Das ist erstmal ne "Standard" htaccess. Diese nutze ich für Joomla, 95% laufen ja bei mir über Joomla. Da das ganze Dokumentiert ist, seht ihr was Joomla typisch ist. Sollten mod_headers oder mod_expires nich verfügbar sein, wird das ignoriert.

    Wichtig ist auch das da sehr viel mehr möglich ist. Bei SEO-NW funktioniert dieser htaccess Code. Wen Interesse da ist, können wir das gerne weiter "spinnen".

    Was absolut wichtig ist: Bei PHP Dateien, also wenn ihr PHP Dateien habt die direkt aufrufbar sein sollen, das verhindert die htaccess. Das ist auch so gewollt. Ausnahmen sind aber möglich!

    Für Joomla ist das so aber schonmal sehr gut. Ich empfehle trotzdem eine WAF ( Webanwendungsfirewall ) dazwischen zu schalten. Für SEO-NW Kunden ist das kostenlos ( Joomla und andere PHP Krams )

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare

    Support 24h Bereitschaft 01522 9406036- NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

    Kommentar


    • #3
      Das ist auch nicht verkehrt:
      Code:
      ##### Common hacking tools and bandwidth hoggers block -- BEGIN
      SetEnvIf user-agent "WebBandit" stayout=1
      SetEnvIf user-agent "webbandit" stayout=1
      SetEnvIf user-agent "Acunetix" stayout=1
      SetEnvIf user-agent "binlar" stayout=1
      SetEnvIf user-agent "BlackWidow" stayout=1
      SetEnvIf user-agent "Bolt 0" stayout=1
      SetEnvIf user-agent "Bot mailto:craftbot@yahoo.com" stayout=1
      SetEnvIf user-agent "BOT for JCE" stayout=1
      SetEnvIf user-agent "casper" stayout=1
      SetEnvIf user-agent "checkprivacy" stayout=1
      SetEnvIf user-agent "ChinaClaw" stayout=1
      SetEnvIf user-agent "clshttp" stayout=1
      SetEnvIf user-agent "cmsworldmap" stayout=1
      SetEnvIf user-agent "comodo" stayout=1
      SetEnvIf user-agent "Custo" stayout=1
      SetEnvIf user-agent "Default Browser 0" stayout=1
      SetEnvIf user-agent "diavol" stayout=1
      SetEnvIf user-agent "DIIbot" stayout=1
      SetEnvIf user-agent "DISCo" stayout=1
      SetEnvIf user-agent "dotbot" stayout=1
      SetEnvIf user-agent "Download Demon" stayout=1
      SetEnvIf user-agent "eCatch" stayout=1
      SetEnvIf user-agent "EirGrabber" stayout=1
      SetEnvIf user-agent "EmailCollector" stayout=1
      SetEnvIf user-agent "EmailSiphon" stayout=1
      SetEnvIf user-agent "EmailWolf" stayout=1
      SetEnvIf user-agent "Express WebPictures" stayout=1
      SetEnvIf user-agent "extract" stayout=1
      SetEnvIf user-agent "ExtractorPro" stayout=1
      SetEnvIf user-agent "EyeNetIE" stayout=1
      SetEnvIf user-agent "feedfinder" stayout=1
      SetEnvIf user-agent "FHscan" stayout=1
      SetEnvIf user-agent "FlashGet" stayout=1
      SetEnvIf user-agent "flicky" stayout=1
      SetEnvIf user-agent "GetRight" stayout=1
      SetEnvIf user-agent "GetWeb!" stayout=1
      SetEnvIf user-agent "Go-Ahead-Got-It" stayout=1
      SetEnvIf user-agent "Go!Zilla" stayout=1
      SetEnvIf user-agent "grab" stayout=1
      SetEnvIf user-agent "GrabNet" stayout=1
      SetEnvIf user-agent "Grafula" stayout=1
      SetEnvIf user-agent "harvest" stayout=1
      SetEnvIf user-agent "HMView" stayout=1
      SetEnvIf user-agent "ia_archiver" stayout=1
      SetEnvIf user-agent "Image Stripper" stayout=1
      SetEnvIf user-agent "Image Sucker" stayout=1
      SetEnvIf user-agent "InterGET" stayout=1
      SetEnvIf user-agent "Internet Ninja" stayout=1
      SetEnvIf user-agent "InternetSeer.com" stayout=1
      SetEnvIf user-agent "jakarta" stayout=1
      SetEnvIf user-agent "Java" stayout=1
      SetEnvIf user-agent "JetCar" stayout=1
      SetEnvIf user-agent "JOC Web Spider" stayout=1
      SetEnvIf user-agent "kmccrew" stayout=1
      SetEnvIf user-agent "larbin" stayout=1
      SetEnvIf user-agent "LeechFTP" stayout=1
      SetEnvIf user-agent "libwww" stayout=1
      SetEnvIf user-agent "Mass Downloader" stayout=1
      SetEnvIf user-agent "Maxthon$" stayout=1
      SetEnvIf user-agent "microsoft.url" stayout=1
      SetEnvIf user-agent "MIDown tool" stayout=1
      SetEnvIf user-agent "miner" stayout=1
      SetEnvIf user-agent "Mister PiX" stayout=1
      SetEnvIf user-agent "NEWT" stayout=1
      SetEnvIf user-agent "MSFrontPage" stayout=1
      SetEnvIf user-agent "Navroad" stayout=1
      SetEnvIf user-agent "NearSite" stayout=1
      SetEnvIf user-agent "Net Vampire" stayout=1
      SetEnvIf user-agent "NetAnts" stayout=1
      SetEnvIf user-agent "NetSpider" stayout=1
      SetEnvIf user-agent "NetZIP" stayout=1
      SetEnvIf user-agent "nutch" stayout=1
      SetEnvIf user-agent "Octopus" stayout=1
      SetEnvIf user-agent "Offline Explorer" stayout=1
      SetEnvIf user-agent "Offline Navigator" stayout=1
      SetEnvIf user-agent "PageGrabber" stayout=1
      SetEnvIf user-agent "Papa Foto" stayout=1
      SetEnvIf user-agent "pavuk" stayout=1
      SetEnvIf user-agent "pcBrowser" stayout=1
      SetEnvIf user-agent "PeoplePal" stayout=1
      SetEnvIf user-agent "planetwork" stayout=1
      SetEnvIf user-agent "psbot" stayout=1
      SetEnvIf user-agent "purebot" stayout=1
      SetEnvIf user-agent "pycurl" stayout=1
      SetEnvIf user-agent "RealDownload" stayout=1
      SetEnvIf user-agent "ReGet" stayout=1
      SetEnvIf user-agent "Rippers 0" stayout=1
      SetEnvIf user-agent "SeaMonkey$" stayout=1
      SetEnvIf user-agent "sitecheck.internetseer.com" stayout=1
      SetEnvIf user-agent "SiteSnagger" stayout=1
      SetEnvIf user-agent "skygrid" stayout=1
      SetEnvIf user-agent "SmartDownload" stayout=1
      SetEnvIf user-agent "sucker" stayout=1
      SetEnvIf user-agent "SuperBot" stayout=1
      SetEnvIf user-agent "SuperHTTP" stayout=1
      SetEnvIf user-agent "Surfbot" stayout=1
      SetEnvIf user-agent "tAkeOut" stayout=1
      SetEnvIf user-agent "Teleport Pro" stayout=1
      SetEnvIf user-agent "Toata dragostea mea pentru diavola" stayout=1
      SetEnvIf user-agent "turnit" stayout=1
      SetEnvIf user-agent "vikspider" stayout=1
      SetEnvIf user-agent "VoidEYE" stayout=1
      SetEnvIf user-agent "Web Image Collector" stayout=1
      SetEnvIf user-agent "Web Sucker" stayout=1
      SetEnvIf user-agent "WebAuto" stayout=1
      SetEnvIf user-agent "WebCopier" stayout=1
      SetEnvIf user-agent "WebFetch" stayout=1
      SetEnvIf user-agent "WebGo IS" stayout=1
      SetEnvIf user-agent "WebLeacher" stayout=1
      SetEnvIf user-agent "WebReaper" stayout=1
      SetEnvIf user-agent "WebSauger" stayout=1
      SetEnvIf user-agent "Website eXtractor" stayout=1
      SetEnvIf user-agent "Website Quester" stayout=1
      SetEnvIf user-agent "WebStripper" stayout=1
      SetEnvIf user-agent "WebWhacker" stayout=1
      SetEnvIf user-agent "WebZIP" stayout=1
      SetEnvIf user-agent "Wget" stayout=1
      SetEnvIf user-agent "Widow" stayout=1
      SetEnvIf user-agent "WWW-Mechanize" stayout=1
      SetEnvIf user-agent "WWWOFFLE" stayout=1
      SetEnvIf user-agent "Xaldon WebSpider" stayout=1
      SetEnvIf user-agent "Yandex" stayout=1
      SetEnvIf user-agent "Zeus" stayout=1
      SetEnvIf user-agent "zmeu" stayout=1
      SetEnvIf user-agent "CazoodleBot" stayout=1
      SetEnvIf user-agent "discobot" stayout=1
      SetEnvIf user-agent "ecxi" stayout=1
      SetEnvIf user-agent "GT::WWW" stayout=1
      SetEnvIf user-agent "heritrix" stayout=1
      SetEnvIf user-agent "HTTP::Lite" stayout=1
      SetEnvIf user-agent "HTTrack" stayout=1
      SetEnvIf user-agent "ia_archiver" stayout=1
      SetEnvIf user-agent "id-search" stayout=1
      SetEnvIf user-agent "id-search.org" stayout=1
      SetEnvIf user-agent "IDBot" stayout=1
      SetEnvIf user-agent "Indy Library" stayout=1
      SetEnvIf user-agent "IRLbot" stayout=1
      SetEnvIf user-agent "ISC Systems iRc Search 2.1" stayout=1
      SetEnvIf user-agent "LinksManager.com_bot" stayout=1
      SetEnvIf user-agent "linkwalker" stayout=1
      SetEnvIf user-agent "lwp-trivial" stayout=1
      SetEnvIf user-agent "MFC_Tear_Sample" stayout=1
      SetEnvIf user-agent "Microsoft URL Control" stayout=1
      SetEnvIf user-agent "Missigua Locator" stayout=1
      SetEnvIf user-agent "panscient.com" stayout=1
      SetEnvIf user-agent "PECL::HTTP" stayout=1
      SetEnvIf user-agent "PHPCrawl" stayout=1
      SetEnvIf user-agent "PleaseCrawl" stayout=1
      SetEnvIf user-agent "SBIder" stayout=1
      SetEnvIf user-agent "Snoopy" stayout=1
      SetEnvIf user-agent "Steeler" stayout=1
      SetEnvIf user-agent "URI::Fetch" stayout=1
      SetEnvIf user-agent "urllib" stayout=1
      SetEnvIf user-agent "Web Sucker" stayout=1
      SetEnvIf user-agent "webalta" stayout=1
      SetEnvIf user-agent "WebCollage" stayout=1
      SetEnvIf user-agent "Wells Search II" stayout=1
      SetEnvIf user-agent "WEP Search" stayout=1
      SetEnvIf user-agent "zermelo" stayout=1
      SetEnvIf user-agent "ZyBorg" stayout=1
      SetEnvIf user-agent "Indy Library" stayout=1
      SetEnvIf user-agent "libwww-perl" stayout=1
      SetEnvIf user-agent "Go!Zilla" stayout=1
      SetEnvIf user-agent "TurnitinBot" stayout=1
      <IfModule !mod_authz_core.c>
      deny from env=stayout
      </IfModule>
      <IfModule mod_authz_core.c>
        <RequireAll>
          Require all granted
          Require not env stayout
        </RequireAll>
      </IfModule>
      ##### Common hacking tools and bandwidth hoggers block -- END

      wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare

      Support 24h Bereitschaft 01522 9406036- NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

      Kommentar


      • #4
        Sinnvolles Thema, zu dem ich leider nicht viel beitragen kann, das ich aber mit Interesse verfolgen werde.
        Frei nach Dieter Nuhr
        Das Internet ist zum Lebensraum der Dauerbeleidigten geworden, die immer einen Grund finden, anderen irgendetwas vorzuwerfen, um sich selbst moralisch zu erhöhen.



        Partnerprogramm Kredite - Klasse statt Masse

        Kommentar


        • #5
          In keiner Liste sind die robots der SEO-Tools drin. ;)

          Kommentar


          • #6
            Zitat von Lunte Beitrag anzeigen
            In keiner Liste sind die robots der SEO-Tools drin. ;)
            Ja, die sperre ich auch aus, und für deutsche Seiten auch mit geoIP alles östlich von Polen oder so

            Kommentar


            • #7
              Code?

              wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare

              Support 24h Bereitschaft 01522 9406036- NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

              Kommentar


              • #8
                Also ich hab noch das da (fast gleich wie bei Alex ganz oben) drinne.
                Das "age" ist auf Maximum, weil sich bei mir nur wenig ändert.
                Die beiden "must-revalidate" hab ich drin, weil die xml und txt-Dokumente bei mir auch von anderen ständig neu eingelesen werden müssen (Preistabellen usw.).
                Die html und php-Dateien will ich nirgends gecached haben.

                Das
                # Header unset ETag
                Header unset Last-Modified
                hab ich drin, weil es nur so fehlerfrei funktioniert.
                Ich hab keine Ahnung wieso - aber es geht.
                Code:
                <IfModule mod_headers.c>
                <FilesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
                Header set Cache-control "max-age=29030400, public"
                </FilesMatch>
                <FilesMatch "\\.(css)$">
                Header set Cache-control "max-age=29030400, public"
                </FilesMatch>
                <FilesMatch "\\.(ttf|woff|woff2)$">
                Header set Cache-control "max-age=29030400, public"
                </FilesMatch>
                <FilesMatch "\\.(js)$">
                Header set Cache-control "max-age=29030400, private"
                </FilesMatch>
                <FilesMatch "\\.(xml|txt)$">
                Header set Cache-control "max-age=29030400, public, must-revalidate"
                </FilesMatch>
                <FilesMatch "\\.(html|htm|php)$">
                Header set Cache-control "max-age=29030400, must-revalidate"
                </FilesMatch>
                # Header unset ETag
                Header unset Last-Modified
                </IfModule>
                Habe eben beschlossen, an Easiophobie zu leiden.
                Und grade ist auch noch ne Pagophobie dazugekommen...
                catcat.cc/

                Kommentar


                • #9
                  Hallo zusammen,

                  nettes Thema, ist aber die reine .htaccess nicht einach zu aufgeblasen? Bei jedem Request wird ja nach der htaccess gefragt :)
                  Könnte man doch auch via Plesk in die Hosting Optionen einbauen?

                  Zum Thema "Leverage Browser"

                  /wp-content/plugins/wp-slimstat/wp-slimstat.min.js (expiration not specified)
                  /wp-content/themes/**t/images/header.png (expiration not specified)
                  /wp-content/themes/**/images/icon.png (expiration not specified)

                  Wie bekommt man dieses "expiration not specified" in den Griff?

                  Kommentar


                  • #10
                    Geht das nicht mit dem da?
                    ExpiresByType application/javascript "access plus 1 year"
                    ExpiresByType image/png "access plus 1 month"
                    Habe eben beschlossen, an Easiophobie zu leiden.
                    Und grade ist auch noch ne Pagophobie dazugekommen...
                    catcat.cc/

                    Kommentar


                    • #11
                      @cultd3ad
                      Du gefällst mir, sparen an einfachen Dingen. Klar kann man das auch direkt per vHost machen. Der Nachteil, man muss einen Reload durchführen, wenn man was ändert, aber genau so mache ich das auch. htaccess ist bei mir deaktiviert, da der Server a) in jedem Verzeichnis für jeden Request suchen muss, ob eine da ist und wenn b) die bei jeden Request abarbeiten muss.

                      Das mit dem anderen.... Was CatCat sagte sollte zumindest im Bereich PNG gehen. JS kann gehen, muss aber nicht. Schau Dir mal an, wie Dein Server die Daten ausliefert. Kann auch sein, dass das vom Type "text/javascript" ist oder "application/x-javascript". Nicht alle OS und nicht alle Versionen eines OS sind da gleich.

                      Also einfach im Antwort-Header nachsehen, was der da ausliefert und dann so wie CatCat schrieb, eintragen, nur eventuell angepasst an den eigenen Mime-Type.

                      Kommentar

                      Lädt...
                      X

                      Das Rechtliche
                      Impressum | Widerruf | Datenschutz | Disclaimer |