апаш.htaccess rewrite-могу ли я переместить это в httpd.конф


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

Я читал, что его влияние на производительность использовать .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>
3 8

3 ответа:

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

Возьмите свой .htaccess например:

Содержание .файл htaccess в файле /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>

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

Каждому виртуальному хосту требуются свои собственные правила перезаписи, если только:

  1. вы указываете RewriteOptions inherit в каждом виртуальном хосте или
  2. вы используете Директиву include в каждом виртуальном хосте

Источник: https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine

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

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

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

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