web-dev-qa-db-ja.com

.htaccessファイルはWebサイトの速度を低下させますか?もしそうなら、異なる書き換えルールなどでこれらの問題を解決するより良い方法はありますか?

ここに私の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]

250行の周りにたくさんのルールがあるように私を助けてください...

3
Jack

これは間違いなく残りの200行以上に依存しますが、これまでに投稿した内容は2行だけに削減できるようです。

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

これにより、サイトがクロールされることはありません。

コメントで述べたように、次のようなものがある場合、特定のURLのみを書き換えたい場合、これをさらに減らすことは困難になります。

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]

ただし、パターンを見つけることができる場合(たとえば、a〜zおよび長さが14文字以上)、これを次のように減らすことができます。

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

定義により、htaccessは、サーバーがファイルのすべてのフォルダーをチェックする必要があるため、サイトの速度を低下させます。あなたの場合、フォルダは/patients/findadoctor//patients/およびルートフォルダです。これらのルールを記述するのがより効率的ですサーバー設定自体でを設定し、AllowOverride Noneを設定すると、Apacheがhtaccessファイルを探すのを停止します。共有ホスティングを使用している場合、これを行うことはできません。また、設定を変更するたびにサーバーを再起動する必要があります。

ただし、ほとんどの場合のパフォーマンスは大きな問題にはなりません。まず、htaccessファイルがサイトの速度を低下させていることを確認する必要があります。

  • サーバーがすぐに応答するが、ページの読み込みに時間がかかる場合、フロントエンド(HTML、CSS、Javascript)に問題があります。 Chrome Dev ToolsまたはFirebugの[ネットワーク]タブを確認すると、タイミングが表示されます。
  • すべてのhtaccessルールを一時的に削除し、書き換えられたURL(例:findadoctor.php?id=a)を直接読み込み、それでも読み込みに長い時間がかかる場合、PHPコードのどこかに問題があります。
1
DisgruntledGoat