Cea mai bună colecție de coduri pentru fișierul tău .htaccess

1 iun. 2011, 19:49:49
Vizualizări: 18.8K
Voturi: 65

Avem Cea mai bună colecție de coduri pentru fișierul functions.php, așa că am considerat că ar fi util să creăm un subiect similar pentru fișierele noastre .htaccess.

ȘI NU UITAȚI SĂ ADAUGAȚI PROPRILE VOASTRE FRAGMENTE DE COD ÎN ACEASTĂ LISTĂ

2
Comentarii

Idee excelentă. Desigur, moderatorii ar trebui să facă acest lucru un wiki comunitar. Ar fi de asemenea util (ei bine, ar fi util pentru mine) dacă atunci când sunt postate răspunsuri, să fie inclusă o explicație clară a modificării și a modului în care funcționează.

Ray Mitchell Ray Mitchell
1 iun. 2011 20:47:23

Făcut CW. De asemenea, te rog să muți primul tău fragment de cod în răspuns.

Rarst Rarst
2 iun. 2011 00:43:26
Toate răspunsurile la întrebare 7
6
23

Acestea sunt 3 fragmente de cod pentru o performanță mai bună, conform regulilor Yahoo!:

Dezactivează Etags:

Header unset ETag
FileETag None

Adaugă headere de expirare:

<FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Tue, 16 Jun 2020 20:00:00 GMT"
</FilesMatch>

Sau

ExpiresActive On
ExpiresByType text/html "access plus 1 day"
ExpiresByType image/gif "access plus 10 years"
ExpiresByType image/jpeg "access plus 10 years"
ExpiresByType image/png "access plus 10 years"
ExpiresByType text/css "access plus 10 years"
ExpiresByType text/javascript "access plus 10 years"
ExpiresByType application/x-javascript "access plus 10 years"

Comprimă fișierele text:

<FilesMatch "\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>

Citește mai multe despre ele aici.

Actualizat:

Redirecționează cererile către domeniul www

RewriteCond %{HTTP_HOST} !^www\.domain\.tld [NC]
RewriteRule ^(.*)$ http://www.domain.tld/$1 [R=301,L]

Blochează cererile către xmlrpc.php

Folosește această regulă doar dacă nu folosești publicarea la distanță, deoarece poate preveni atacurile asupra blogului tău.

RewriteRule ^(.*)xmlrpc\.php$ http://www.domain.tld [R=301,L]

Redirecționează toate feed-urile către Feedburner

RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ http://feeds.feedburner.com/feed_uri [R=301,NC,L]
2 iun. 2011 05:16:31
Comentarii

Încă cred că recomandarea Yahoo are sursa în incapacitatea Yahoobot de a folosi HTTP 1.1. Validarea tagurilor de entitate (Entity tags) este ceva diferit față de validarea împotriva Last-Modified.

fuxia fuxia
2 iun. 2011 08:36:10

Nu eliminați ETags doar din capriciu, acestea pot fi benefice, depinde de mulți factori.

Wyck Wyck
3 iun. 2011 02:13:43

@toscho & @Wyck: Puteți explica despre Etag? Văd că toate ghidurile despre performanța web recomandă acest lucru. Care este problema cu el?

Anh Tran Anh Tran
3 iun. 2011 05:16:42

@rilwis ETag este folosit pentru validare puternică: De exemplu, un widget modificat nu schimbă Last-Modified dar schimbă ETag. Vezi și Ghidul de Caching.

fuxia fuxia
3 iun. 2011 08:50:21

@toscho: punct bun despre ETag vs Last-Modified. Mersi :)

Anh Tran Anh Tran
3 iun. 2011 09:23:00

În IE 9, reluarea descărcării necesită un ETag.

fuxia fuxia
6 iun. 2011 22:49:31
Arată celelalte 1 comentarii
3
13

Reguli mai bune de rescriere pentru permalink-uri WordPress

Implicit, WordPress trimite o pagină HTML 404 pentru imaginile și fișierele CSS lipsă - acestea nu sunt niciodată afișate de browser. De asemenea, interceptează legăturile simbolice.

# Imagini, Fișiere CSS etc. nu necesită o pagină HTML 404
RewriteCond %{REQUEST_URI} !.+\.\w{2,4}$
# Fișier existent
RewriteCond %{REQUEST_FILENAME} !-f
# Director existent
RewriteCond %{REQUEST_FILENAME} !-d
# Legătură simbolică
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ index.php [L]
2 iun. 2011 02:19:31
Comentarii

Sunt curios cum ar funcționa aceasta într-o configurație multisite?

Dan Gayle Dan Gayle
2 iun. 2011 20:06:15

@DanGayle Nu există nicio diferență. Codul pentru redirecționarea internă a tuturor către index.php este același.

fuxia fuxia
2 iun. 2011 20:09:06

Funcționează perfect!

Benson Benson
7 iul. 2020 00:42:04
0

Câteva elemente de bază pentru securitate.

# limitează indexarea directorilor
Options All -Indexes

# protejează fișierul .htaccess,
# acest lucru se face implicit cu fișierul de configurare Apache,
# dar nu se știe niciodată.
<files .htaccess>
order allow,deny
deny from all
</files>

# dezactivează semnătura serverului
ServerSignature Off

# limitează încărcarea fișierelor la 10mb
LimitRequestBody 10240000

# protejează wp-config.php.
<files wp-config.php>
order allow,deny
deny from all
</files>

# Limitează autentificările și accesul la admin după IP
# acest cod se plasează în directorul /admin NU în directorul rădăcină .htaccess
<Limit GET POST PUT>
order deny,allow
deny from all
allow from xx.xx.xx.xx  //(IP-ul tău static)
</Limit>    

# blochează interogări periculoase (hackeri/roboți), atenție acest lucru poate afecta unele plugin-uri
# EXPLOATĂRI PRIN INTEROGĂRI
<IfModule mod_rewrite.c>
 RewriteCond %{QUERY_STRING} \.\.\/    [NC,OR]
 RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
 RewriteCond %{QUERY_STRING} tag\=     [NC,OR]
 RewriteCond %{QUERY_STRING} ftp\:     [NC,OR]
 RewriteCond %{QUERY_STRING} http\:    [NC,OR]
 RewriteCond %{QUERY_STRING} https\:   [NC,OR]
 RewriteCond %{QUERY_STRING} mosConfig [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|'|"|;|\?|\*).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(%22|%27|%3C|%3E|%5C|%7B|%7C).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(globals|encode|config|localhost|loopback).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare|drop).* [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>
2 iun. 2011 19:00:43
0

Compresia GZip

Compresia GZip

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css  application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
2 iun. 2011 19:49:54
2

Redirectări și permalink-uri frumoase fără mod_rewrite

# - script kiddies

Redirect permanent /admin.php http://localhost
Redirect permanent /_vti_bin http://localhost
Redirect permanent /css http://localhost
Redirect permanent /site http://localhost
Redirect permanent /s/ http://localhost
Redirect permanent /v/ http://localhost
Redirect permanent /html http://localhost
Redirect permanent /stil http://localhost
Redirect permanent /wp-content/cache.php http://localhost


# - roboți stupizi

Redirect permanent /sitemap.gz /sitemap.xml.gz
Redirect permanent /default.htm /
Redirect permanent /feeds/posts/default /feed/

- Trunchiere URL

RedirectMatch Permanent ^/page/$ /
# /category/ și /comments/ către un Cuprins
RedirectMatch Permanent ^/(category|comments)/$ /uebersicht/

# Doar Git! :)
RedirectMatch Permanent \.(svn|cvs|SVN|CVS|bzr) http://localhost

# Roboți care caută versiuni mobile
# vezi http://perishablepress.com/press/2010/04/26/stop-404-requests-for-mobile-versions-of-your-site/#comment-78105
RedirectMatch gone /mobi(le)?($|/)
RedirectMatch gone /iphone($|/)

# - 410

# Fluxurile vechi sunt moarte
Redirect gone /2008/feed/
Redirect gone /2009/feed/
Redirect gone /2010/feed/

# roboți și browsere stupide din nou

Redirect gone /crossdomain.xml
Redirect gone /labels.rdf
Redirect gone /.well-known
Redirect gone /parent-page
RedirectMatch gone .*/config$

# Permalink-uri frumoase fără mod_rewrite!
ErrorDocument 404 /index.php
2 iun. 2011 01:53:52
Comentarii

Este această metodă mai rapidă? Sunt curios dacă există vreun beneficiu în a face lucrurile în acest fel

Dan Gayle Dan Gayle
2 iun. 2011 19:59:14

@DanGayle mod_rewrite lucrează cu regex și, prin urmare, este puțin mai lent. Dar nu poți folosi reguli suplimentare de care ai nevoie într-un setup multisite.

fuxia fuxia
2 iun. 2011 20:12:07
1

ERRATA

#Afișează cu tupeu adresa de email a administratorului în mesajele de eroare
SetEnv SERVER_ADMIN info@yoursite.com

#dezactivează hotlinking-ul imaginilor cu opțiune interzisă sau imagine personalizată
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite.com/.*$ [NC]
#RewriteRule \.(gif|jpg|png)$ – [F]
#RewriteRule \.(gif|jpg|png)$ http://www.yoursite.com/wp-content/uploads/2011/04/bracker_thou_shalt_not_steal24.jpg [R,L]

#blochează domenii referitoare
#RewriteEngine on
#RewriteCond %{HTTP_REFERER} digg\.com [NC]
#RewriteRule .* – [F]

#Elimină /category/ din URL-ul WordPress
RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

#Redirecționează vizitatorii către o pagină de întreținere
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

#corectare automată a greșelilor simple de ortografie în URL
<IfModule mod_speling.c>
CheckSpelling On
</IfModule>

#autentificare îmbunătățită
RewriteRule ^login$ http://example.com/wp-login.php [NC,L]
14 iun. 2011 05:43:08
Comentarii

Hei, super. Nu știam despre modulul mod_speling. Ar trebui să fie util!

Dan Gayle Dan Gayle
14 iun. 2011 20:19:31
0

Acesta este ceva mai securizat, sper că vă va plăcea

# ÎNCEPUT Cache Browser Wordpress
<IfModule mod_mime.c>
    AddType text/css .css
    AddType application/x-javascript .js
    AddType text/x-component .htc
    AddType text/html .html .htm
    AddType text/richtext .rtf .rtx
    AddType image/svg+xml .svg .svgz
    AddType text/plain .txt
    AddType text/xsd .xsd
    AddType text/xsl .xsl
    AddType text/xml .xml
    AddType video/asf .asf .asx .wax .wmv .wmx
    AddType video/avi .avi
    AddType image/bmp .bmp
    AddType application/java .class
    AddType video/divx .divx
    AddType application/msword .doc .docx
    AddType application/vnd.ms-fontobject .eot
    AddType application/x-msdownload .exe
    AddType image/gif .gif
    AddType application/x-gzip .gz .gzip
    AddType image/x-icon .ico
    AddType image/jpeg .jpg .jpeg .jpe
    AddType application/vnd.ms-access .mdb
    AddType audio/midi .mid .midi
    AddType video/quicktime .mov .qt
    AddType audio/mpeg .mp3 .m4a
    AddType video/mp4 .mp4 .m4v
    AddType video/mpeg .mpeg .mpg .mpe
    AddType application/vnd.ms-project .mpp
    AddType application/x-font-otf .otf
    AddType application/vnd.oasis.opendocument.database .odb
    AddType application/vnd.oasis.opendocument.chart .odc
    AddType application/vnd.oasis.opendocument.formula .odf
    AddType application/vnd.oasis.opendocument.graphics .odg
    AddType application/vnd.oasis.opendocument.presentation .odp
    AddType application/vnd.oasis.opendocument.spreadsheet .ods
    AddType application/vnd.oasis.opendocument.text .odt
    AddType audio/ogg .ogg
    AddType application/pdf .pdf
    AddType image/png .png
    AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
    AddType audio/x-realaudio .ra .ram
    AddType application/x-shockwave-flash .swf
    AddType application/x-tar .tar
    AddType image/tiff .tif .tiff
    AddType application/x-font-ttf .ttf .ttc
    AddType audio/wav .wav
    AddType audio/wma .wma
    AddType application/vnd.ms-write .wri
    AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
    AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css A31536000
    ExpiresByType application/x-javascript A31536000
    ExpiresByType text/x-component A31536000
    ExpiresByType text/html A3600
    ExpiresByType text/richtext A3600
    ExpiresByType image/svg+xml A3600
    ExpiresByType text/plain A3600
    ExpiresByType text/xsd A3600
    ExpiresByType text/xsl A3600
    ExpiresByType text/xml A3600
    ExpiresByType video/asf A31536000
    ExpiresByType video/avi A31536000
    ExpiresByType image/bmp A31536000
    ExpiresByType application/java A31536000
    ExpiresByType video/divx A31536000
    ExpiresByType application/msword A31536000
    ExpiresByType application/vnd.ms-fontobject A31536000
    ExpiresByType application/x-msdownload A31536000
    ExpiresByType image/gif A31536000
    ExpiresByType application/x-gzip A31536000
    ExpiresByType image/x-icon A31536000
    ExpiresByType image/jpeg A31536000
    ExpiresByType application/vnd.ms-access A31536000
    ExpiresByType audio/midi A31536000
    ExpiresByType video/quicktime A31536000
    ExpiresByType audio/mpeg A31536000
    ExpiresByType video/mp4 A31536000
    ExpiresByType video/mpeg A31536000
    ExpiresByType application/vnd.ms-project A31536000
    ExpiresByType application/x-font-otf A31536000
    ExpiresByType application/vnd.oasis.opendocument.database A31536000
    ExpiresByType application/vnd.oasis.opendocument.chart A31536000
    ExpiresByType application/vnd.oasis.opendocument.formula A31536000
    ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
    ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
    ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
    ExpiresByType application/vnd.oasis.opendocument.text A31536000
    ExpiresByType audio/ogg A31536000
    ExpiresByType application/pdf A31536000
    ExpiresByType image/png A31536000
    ExpiresByType application/vnd.ms-powerpoint A31536000
    ExpiresByType audio/x-realaudio A31536000
    ExpiresByType image/svg+xml A31536000
    ExpiresByType application/x-shockwave-flash A31536000
    ExpiresByType application/x-tar A31536000
    ExpiresByType image/tiff A31536000
    ExpiresByType application/x-font-ttf A31536000
    ExpiresByType audio/wav A31536000
    ExpiresByType audio/wma A31536000
    ExpiresByType application/vnd.ms-write A31536000
    ExpiresByType application/vnd.ms-excel A31536000
    ExpiresByType application/zip A31536000
</IfModule>
<IfModule mod_deflate.c>
    <IfModule mod_setenvif.c>
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    </IfModule>
    <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
    </IfModule>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
</IfModule>
<FilesMatch "\.(css|js|htc|CSS|JS|HTC)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|XML)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|XLW|ZIP)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
# SFÂRȘIT Cache Browser Wordpress
# ÎNCEPUT Cache Pagini Wordpress core
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*\/)?Wordpress_rewrite_test$ $1?Wordpress_rewrite_test=1 [L]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteRule .* - [E=Wordpress_ENC:_gzip]
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{HTTP_HOST} =hubtank.com
    RewriteCond %{REQUEST_URI} !(\/wp-admin\/|\/xmlrpc.php|\/wp-(app|cron|login|register|mail)\.php|\/feed\/|wp-.*\.php|index\.php) [NC,OR]
    RewriteCond %{REQUEST_URI} (wp-comments-popup\.php|wp-links-opml\.php|wp-locations\.php) [NC]
    RewriteCond %{HTTP_COOKIE} !(comment_author|wp-postpass|wordpress_\[a-f0-9\]\+|wordpress_logged_in) [NC]
    RewriteCond %{HTTP_USER_AGENT} !(W3\ Total\ Cache/0\.9\.2\.4) [NC]
    RewriteCond "%{DOCUMENT_ROOT}/wp-content/Wordpress/pgcache/%{REQUEST_URI}/_index%{ENV:Wordpress_UA}%{ENV:Wordpress_REF}%{ENV:Wordpress_SSL}.html%{ENV:Wordpress_ENC}" -f
    RewriteRule .* "/wp-content/Wordpress/pgcache/%{REQUEST_URI}/_index%{ENV:Wordpress_UA}%{ENV:Wordpress_REF}%{ENV:Wordpress_SSL}.html%{ENV:Wordpress_ENC}" [L]
</IfModule>
# SFÂRȘIT Cache Pagini Wordpress core
# ÎNCEPUT WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
27 ian. 2012 22:48:37