2013-06-17 2 views
8

Di seguito è l'unico codice che ho nel file .htaccess con apache 2.2.apache .htaccess rewrite - posso spostarlo in httpd.conf

Ho letto che è un impatto sulle prestazioni di utilizzare un .htacess e meglio se questo può essere a corto di httpd.conf. Quindi è possibile che io aggiunga questo in httpd.conf? Se sì, dove lo metterei?

Dovrebbe entrare nel VirtualHost per ogni Host che ne ha avuto bisogno (nel mio caso un sacco di host) o potrebbe andare genericamente in httpd.conf in modo che si applichi a tutti gli host?

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

risposta

20

.htaccess fornisce la configurazione per una directory, mentre httpd.conf fornisce una configurazione generale. Naturalmente, puoi spostare il contenuto da .htaccess a httpd.conf. È possibile trovare maggiori informazioni su .htaccess qui: Apache HTTP Server Tutorial: .htaccess files

prendere il vostro .htaccess per esempio:

Contenuto del file .htaccess nella/www/htdocs/esempio

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

Sezione dal vostro httpd. conf file

<Directory /www/htdocs/example> 
    <IfModule mod_rewrite.c> 
     RewriteEngine on 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteCond %{REQUEST_FILENAME} !-l 
     RewriteRule ^(.*)$ index.php?/$1 [L] 
    </IfModule> 
</Directory> 
+0

credi che questo cambiamento possa migliorare le prestazioni di Apache? – user1105192

+5

sì, assolutamente. citazione dal sito Web di cui sopra: _Si dovrebbe evitare di utilizzare i file .htaccess completamente se si ha accesso al file di configurazione del server principale httpd. L'uso dei file .htaccess rallenta il server HTTP Apache. Qualsiasi direttiva che puoi includere in un file .htaccess è meglio impostata in un blocco Directory, poiché avrà lo stesso effetto con prestazioni migliori. –

2

Ogni VirtualHost bisogno di un proprio regole di riscrittura specificato, a meno che:

  1. Si specifica RewriteOptions inherit all'interno di ogni VirtualHost o
  2. si utilizza una direttiva include all'interno di ogni VirtualHost

SOURCE : https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine

noti che riscrivere le configurazioni non vengono ereditate dalle host virtuali

2

Secondo la documentazione di Apache si può mettere la configurazione in un .htaccess all'interno di un <Directory> -block.

Si dovrebbe evitare l'uso di file .htaccess completamente se si ha accesso al file di configurazione del server principale httpd. L'uso dei file .htaccess rallenta il server HTTP Apache. Qualsiasi direttiva che puoi includere in un file .htaccess è meglio impostata in un blocco Directory, poiché avrà lo stesso effetto con prestazioni migliori.

Per semplificare l'amministrazione, inserisco le direttive di riscrittura in un file separato che viene quindi incluso in ciascun host virtuale. Dovrebbe funzionare.