Sa lucram cu fisiere .htaccess
29Zilele acestea am considerat sa mai trecem la articole putin mai tehnice, insa prefer sa facem acest lucru treptat. De aceea incepem cu cateva lucruri ce le putem face cu fisierul .htaccess. Vreau sa spun ca inainte de orice schimbare a unui fisier .htaccess sa fiti siguri ca aveti un backup creat fisierului respectiv, de siguranta.
Ce este .htaccess?
Fisierul .htaccess este fisierul cunoscut in majoritatea serverelor web(cel mai popular fiind Apache) ca fisierul de configurare la nivel de director. Practic, acest fisier este introdus in unul din foldere si ofera posibilitatea de a suprascrie unele dintre setarile serverului.
Majoritatea „tipurilor” ce le voi prezenta aici sunt foarte utile si necesare dupa parerea mea, neinsistand prea mul asupra unora din ele.
Schimbarea fisierului de configurare la nivel local
Daca nu sunteti multumit de numele ce il are fisierul(.htaccess) puteti sa redenumiti acest fisier si seta ca fiind noul configurator la nivel local. In situatia de mai jos, noul fisier care va fi special creat pentru configurarea la nivel local este .worlditConfig.
AccessFileName .worlditConfig
Redirectarea feedului wordpress catre Feedburner
Codul de mai jos va redirecta toate feedurile din interiorul site-ului, care au ca browser Feedburner sau FeedValidator, catre adresa de feedburner setata de tine.Tot ce trebuie sa faci este sa inlocuieste nume_feed de pe ultima linie de cod , cu numele fluxului tau da la Feedburner.Aceasta modificare este foarte utila atunci cand aveti nevoie de un management mai usor al statisticilor abonatilor tai.
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/nume_feed [R=302,NC,L]
Folosirea compresiei gzip
Aceasta va ajuta cu siguranta la optimizarea site-ului dumneavoastra, trimitand catre client fisierele comprimate,urmand sa fie decomprimate in momentul in care sunt descarcate de acesta.
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript 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
Respingerea comentariilor ce nu au refferer
Aveti instalat pe WordPress Akismet, dar acesta scapa multe spamuri.O metoda destul de eficienta pentru a rezolva aceasta problema este de a verifica daca pagina are refferer provenind de pe blogul tau, deoarece un comentariu ce este dat direct de pe blog va avea ca refferer site-ul de pe care sa accesat fisierul wp-comments-post.php . Tot ce trebuie sa faceti este sa schimbati linia 4,unde este worldit.info cu numele blogului tau.Bineinteles ca aceasta schimbare nu garanteaza siguranta,insa micsoreaza procentul de spam primit pe blog. 🙂
RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*worldit.info.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Redirectarea vizitatorilor catre o pagina temporara
Aveti nevoie de cateva ore in care sa testati sau sa faceti cateva schimbari. Pentru asta e nevoie de un plugin ce redirecteaza catre o pagina temporar creat pentru astfel de situatii.In cazul in care nu doriti sa activati inca un plugin, puteti modifica astfel fisierul .htaccess.Tot ce trebuie sa faceti este schimbati temporar.html de pe a doua si ultima linie cu numele fisierului dumneavoastra. Pentru ca tu sa ai totusi acces la blog, modifica pe a 3a linie IP-ul respectiv cu al tau.
RewriteEngine on RewriteCond %{REQUEST_URI} !/temporar.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /temporar.html [R=302,L]
Permiteti accesul doar IP-ului tau in wp-admin
Recomand aceasta metoda doar in cazul in care blogul nu este unul colectiv si sunteti singurul care ar trebui sa aiba acces la wp-admin. De asemenea trebuie sa aveti grija ca IP-ul sa nu fie dinamic. Modificati IP-ul xx.xx.xx.xx cu al dumneavoastra. Daca aveti mai multe IP-uri, atunci puteti adauga mai multe linii ca cea in care ati modificat IP-ul.
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Example Access Control" AuthType Basicorder deny,allow deny from all allow from xx.xx.xx.xx
Banarea unui IP
Numai suportati un IP, sau doriti sa banati accesul unor clase de IP-uri de spammeri? Modifica xx.xx.xx.xx cu IP-ul ce doresti sa il banezi. Daca doresti sa banezi mai multe IP-uri pur si simplu adauga inca o linie similara cu cea in care trebuie sa editezi IP-ul.
order allow,deny deny from xx.xx.xx.xx allow from all
Activeaza cache-ul browserului
Revenim la optimizarile site-ului. O alta metoda foarte buna de a optimiza viteza de incarcare a site-ului este activarea cache-ului browserului. Aceasta modificare va return codul 304(fisier nemodificat) pentru fisierele cu extensiile jpg,gif,png,css,js. 🙂
FileETag MTime SizeExpiresActive on ExpiresDefault "access plus 1 year"
Protejeaza fisierul .htaccess
Cea mai buna metoda de a proteja fisierul .htaccess de ochii strainilor este de a-i resping pe acestea.
order allow,deny deny from all satisfy all
Limiteaza dimensiunea unui fisier incarcat
LimitRequestBody 10240000
Mesaje custom pentru diverse erori
Acest lucru ajuta la personalizarea fisierelor ce apar in momentul in care pagina accesata returneaza un cod precum 404,403,500 etc.
ErrorDocument 404 /negasit.php ErrorDocument 403 /interzis.php ErrorDocument 500 /eroare.php
Dezactiveaza listarea browserelor
Dezactivarea listarii directoarelor este o practica des folosita pentru a te asigura ca un personaj rau intentionat nu afla numele fisierelor prea usor.Este indicat sa folosesti acest lucru mai ales daca sunt directoare fara un fisier index.
Options All -Indexes
Acestea sunt cateva din secretele fisierelor .htaccess. Daca aveti de adaugat la acest articol, va rog nu ezitati! 🙂
Sa zicem ca eu gazduiesc doua site-uri pe un singur host:
Site-A si Site-B si vreau sa banez un ip sa nu mai intre pe Site-A.
Daca banez ip-ul respectiv din .htaccess, acesta nu va mai putea sa intre nici pe Site-B. Corect?
Cum ii banez accesul din .htaccess doar pe Site-A ?
Pai daca acel .htaccess il pui in web root la Site-A, asta nu afecteaza cu nimic Site-B.
Singurul caz in care acelasi .htaccess ar afecta ambele site-uri e daca ar fi vorba de fapt de unul si acelasi site sub doua nume diferite (si care folosesc aceleasi fisiere in backend, adica acelasi storage location pe server).
Am si eu o probltma cu fisierul de .htaccess. Vreau sa imi incarce direct index.php si am scris asa
RewriteEngine on
RewriteRule ^$ index.php?page=1
RewriteRule ^home/$ index.php?page=1
RewriteRule ^Cine_suntem/$ index.php?page=2
RewriteRule ^Cum_comand/$ index.php?page=3
RewriteRule ^Informatii_utile/$ index.php?page=4
RewriteRule ^Ne-au_ales/$ index.php?page=5
RewriteRule ^Contact/$ index.php?page=6 [L]
dar imi da eroarea asta
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.]
Si in wamp asta [Thu Jul 08 12:39:20 2010] [alert] [client 127.0.0.1] C:/wamp/www/.htaccess: Invalid command ‘\xff\xfeR’, perhaps misspelled or defined by a module not included in the server configuration.
Mentionez ca am bifat modulul de rewrite.
Multumesc frumos.
Pentru redirectionare temporara nu se foloseste 307?
301: Moved Permanently, 302: Found [Elsewhere], 307: Temporary Redirect
🙂
Warning: ob_start() [ref.outcontrol]: output handler ‘ob_gzhandler’ conflicts with ‘zlib output compression’ in /home/para100/public_html/browse.php on line 3
ma puteti ajuta ? ce sa fac sa dispara aceasta ?
O idee e „error_reporting(0);”.
O alta e dezactivarea (stergerea) ob_start din fisierele PHP sau ob_gzhandler(una din ele). 🙂
Excelent articolul. GG.
Buna
Linkurile de pe un site de-al meu arata asa:
nume_site.ro/?id2=0000
si as vrea sa arate asa:
nume_site.ro/titlu_pagina.html
Poti sa imi spui ce ar trebui sa scriu in .htaccess pentru a le afisa cu titlu.html?
Multumesc