PDA

Bekijk Volledige Versie : htaccess > 1600 lines



GuusDeGraeve
25/02/09, 02:50
Hoi,

Een klant van ons heeft meer dan 1600 regels in z'n .htaccess file staan, kan dit voor performantie problemen zorgen of moeten we de oorzaak elders zoeken? En bestaat er een manier om na te gaan hoe lang apache erover doet om die .htaccess file te overlopen?

thanks ;)

SmilieBG
25/02/09, 08:40
Er zal ongetwijfeld wat performance verlies zijn met zo veel regels.
Ik denk dat het verstandiger is om alle regels in Apache config te zetten en .htaccess uit te zetten indien mogelijk (dus, als het niet shared hosting is, maar dedi / vps e.d.). Het is namelijk zo, dat als .htaccess in Apache aan staat, dat bij elke opvragen van een pagina Apache door alle mappen heen gaat om te kijken of er .htaccess aanwezig is en zo wel, om deze in te lezen en te verwerken.
Als de regels in config staan, dan leest ie ze eenmaal in bij het (her)starten van Apache en that's it.

Mvg,
Aleks

Ramon Fincken
25/02/09, 10:25
ik verwacht zelfs dat bij iedere keer dat er een request ( dus pagina, css, plaatje ... ) wordt gedaan die htaccess geraadpleegd wordt ( maar heb hier geen bron van ).

eh.. waarom heeft je klant die 1600 regels nodig?

DennisWijnberg
25/02/09, 11:13
Waarschijnlijk wordt die .htaccess gegenereerd vanuit PHP o.i.d t.b.v. mod_rewrite...

Kan je beter met vier regels alles doorsturen naar (bijv) je site.php en het daar allemaal netjes routeren.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ site.php?q=$1 [L,QSA]

Aanzetten
Is het geen file
Is het geen directory
Dan doorsturen naar site.php

Triloxigen
25/02/09, 11:25
Kortom;
Het ligt er maar net aan wat de htaccess doet.

En hoe te testen? Door de htaccess even uit te zetten ;)

PeterT
25/02/09, 18:23
Enige 'redelijke' reden die ik me kan bedenken om zoveel regels te hebben zijn 'deny from'-regels. Tja..

Ramon Fincken
25/02/09, 18:26
Ja ik ook, maar dan groepeer je die toch?

( merk op dat de laatste 123 niet voorkomt )
deny from 123.123.123.

GuusDeGraeve
25/02/09, 18:35
bedankt voor de hulp! Deze regels zijn vrijwel allemaal RewriteRule's. Een klant overtuigen dat hij z'n .htaccess van meer dan 1600lijnen moet herschrijven is natuurlijk geen eenvoudige opdracht.

Ik denk dat ik die lijntjes eens rechtstreeks in de apache conf voor die Virtualhost ga zetten en eens kijken wat dat geeft.

Triloxigen
25/02/09, 18:45
Het maakt volgens mij echt niet echt of het in htaccess staat of in de apache conf, de parsing zal exact hetzelfde zijn.

En de overtuiging dat zijn website boven gemiddelde resources vraagt dat andere er last van onder vinden lijkt mij genoeg overtuiging. Anders moet hij gewoon naar een dedi server.

Maar een rewrite script van 1600 regels lijkt me sowieso al niet goed..

SmilieBG
26/02/09, 01:44
Het maakt wel degelijk uit, want in VirtualHost moet ie het maar een keer doornemen. In htaccess doet ie dat bij elke aanroep van de site / pagina.

Het nadeel hiervan is dat je niet meer zo een regel zomaar in htaccess bij kan zetten, maar dat apache conf aangepast moet worden en daarna graceful restart...

Triloxigen
26/02/09, 01:53
Ok, goed punt ;)