web-dev-qa-db-fra.com

Le fichier .htaccess peut-il ralentir l’exploration d’un site Web? Si tel est le cas, existe-t-il de meilleurs moyens de résoudre ces problèmes avec différentes règles de réécriture et autres?

voici mon fichier htaccess ......

RewriteCond %{REQUEST_URI}  ^/patients/billing/FAQ_billing\.html$ [OR]  
RewriteCond %{REQUEST_URI}  ^/patients/billing/getintouch\.html$   
RewriteRule ^patients/billing/(.*)\.html$  $1.php [L,NC]

RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/a\.html$ [OR]  
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/b\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/c\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/d\.html$ [OR]    
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/e\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/f\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/g\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/h\.html$ [OR]  
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/i\.html$ [OR]    
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/j\.html$ [OR]    
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/k\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/l\.html$ [OR]    
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/m\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/n\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/o\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/p\.html$ [OR]  
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/q\.html$ [OR]  
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/r\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/s\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/t\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/u\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/v\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/w\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/x\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/y\.html$ [OR]   
RewriteCond %{REQUEST_URI}  ^/patients/findadoctor/z\.html$  
RewriteRule ^patients/findadoctor/(.*)\.html$  findadoctor.php?id=$1 [L,NC]

comme ça, il y a beaucoup de règles autour de 250 lignes, aidez-moi s'il vous plaît ...

3
Jack

Cela dépend sans doute de vos 200 lignes restantes, mais ce que vous avez posté jusqu'à présent semble être réductible à 2 lignes seulement:

RewriteRule ^patients/billing/(FAQ_billing|getintouch)\.html$ $1.php [L,NC]
RewriteRule ^patients/findadoctor/([a-z])\.html$ findadoctor.php?id=$1 [L,NC]

Cela ne devrait pas réduire votre site à une exploration.

Comme mentionné dans les commentaires, si vous avez quelque chose comme ce qui suit, il devient difficile de le réduire davantage si vous souhaitez uniquement réécrire des URL spécifiques.

RewriteCond %{REQUEST_URI} ^/patients/findadoctor/paediatriccardiacanaesthesiology\.html$ [OR]
RewriteCond %{REQUEST_URI} ^/patients/findadoctor/paediatriccardiovascularthoracicsurgery\.html$ [OR]
RewriteCond %{REQUEST_URI} ^/patients/findadoctor/bonemarrowtransplant\.html$ [OR]
RewriteCond %{REQUEST_URI} ^/patients/findadoctor/kidneytransplant\.html$ [OR]
RewriteCond %{REQUEST_URI} ^/patients/findadoctor/cardiacanaesthesiology\.html$
RewriteRule ^patients/findadoctor/(.*)\.html$ subcategorydoctor.php?id=$1 [L,NC]

Cependant, si vous pouvez trouver un motif (par exemple, a-z et une longueur minimale de 14 caractères), vous pouvez le réduire à quelque chose comme:

RewriteRule ^patients/findadoctor/([a-z]{14,})\.html$ subcategorydoctor.php?id=$1 [L,NC]
6
MrWhite

Par définition, htaccess ralentit votre site car le serveur doit vérifier chaque fichier pour le fichier - par exemple. dans votre cas, les dossiers /patients/findadoctor/, /patients/ et le dossier racine. Il est plus efficace d'écrire ces règles dans la configuration du serveur elle-même, puis définissez AllowOverride None, ce qui empêchera Apache de rechercher des fichiers htaccess. Si vous utilisez un hébergement partagé, vous ne pourrez probablement pas le faire. En outre, il faut redémarrer le serveur chaque fois que vous modifiez la configuration.

Cependant, la performance dans la majorité des cas ne devrait pas être un problème énorme. Premièrement, vous devriez vérifier que c’est le fichier htaccess qui ralentit le site:

  • Si le serveur répond immédiatement mais que le chargement de la page prend un certain temps, le problème se situe au niveau du front-end (HTML, CSS, Javascript). Vérifiez l'onglet Réseau dans ChromeOutils de développement ou Firebug, il indiquera les durées.
  • Si vous supprimez temporairement toutes les règles htaccess et chargez directement l'URL réécrite (par exemple findadoctor.php?id=a) et que le chargement reste long, le problème est quelque part avec le code PHP.
1
DisgruntledGoat