2013-06-17 3 views
8

Ниже представлен только код, который у меня есть в файле .htaccess с apache 2.2.apache .htaccess переписать - могу ли я переместить это в httpd.conf

Я читал, что его влияние на производительность для использования .htacess и лучше, если это может закончиться httpd.conf. Поэтому можно ли добавить это в httpd.conf? Если да, то где бы я это сказал?

Нужно ли входить в VirtualHost для каждого хоста, который в этом нуждался (в моем случае много хостов), или он мог бы в общем случае входить в httpd.conf, чтобы он применялся ко всем хостам?

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

ответ

20

.htaccess предоставляет конфигурацию для каталога, а httpd.conf обеспечивает общую конфигурацию. Конечно, вы можете перемещать контент от .htaccess до httpd.conf. Вы можете узнать больше о .htaccess здесь: Apache HTTP Server Tutorial: .htaccess files

Возьмите .htaccess, например:

Содержание файла .htaccess в/WWW/HTDOCS/например

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

раздел из вашего 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

Вы считаете, что это изменение улучшит производительность Apache? – user1105192

+5

есть, совершенно. цитата из вышеприведенного веб-сайта: _Вы должны избегать использования файлов .htaccess полностью, если у вас есть доступ к конфигурационному файлу главного сервера httpd. Использование файлов .htaccess замедляет ваш HTTP-сервер Apache. Любая директива, которую вы можете включить в файл .htaccess, лучше устанавливается в блоке Directory, так как она будет иметь тот же эффект с лучшей производительностью. –

2

Каждый VirtualHost нужны свои правила перезаписи не указано, если:

  1. Вы указываете RewriteOptions inherit внутри каждого VirtualHost или
  2. Вы используете include директиву в каждой VirtualHost

ИСТОЧНИК : https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine

Обратите внимание, что перепишет конфигурацию не наследуется виртуальными хостами

2

Согласно Apache Docs вы можете поставить конфигурацию в .htaccess в <Directory> -блоке. http://httpd.apache.org/docs/2.2/howto/htaccess.html

Вам следует избегать использования файлов .htaccess полностью, если у вас есть доступ к конфигурационному файлу главного сервера httpd. Использование файлов .htaccess замедляет ваш HTTP-сервер Apache. Любая директива, которую вы можете включить в файл .htaccess, лучше устанавливается в блоке Directory, так как она будет иметь тот же эффект с лучшей производительностью.

Чтобы облегчить администрирование, я бы поместил директивы rewrite в отдельный файл, который затем включается в каждый виртуальный хост. Это должно сработать.

Смежные вопросы