Назад | Перейти на главную страницу

RewriteBase rule works in .htacess, but not in httpd.conf (inside <directory …="">)?</directory>

Поясню на примере ...

Файл: /var/www/example.com/public/wp-content/cache/minify/.htaccess

<IfModule mod_rewrite.c>

    # THIS WORKS...
    RewriteBase /wp-content/cache/minify/
    RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
    RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
    RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
    RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
    RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]

</IfModule>

Файл: /etc/apache2/httpd.conf

<Directory /var/www/example.com/public>

    AllowOverride None

    Options -MultiViews

    [...]

    <IfModule mod_rewrite.c>
        Options +FollowSymlinks
      # Options +SymLinksIfOwnerMatch
        RewriteEngine On
      # RewriteBase /
    </IfModule>

    [...]

    <IfModule mod_rewrite.c>

        # BUT THIS ISN'T WORKING!!!
        RewriteBase /wp-content/cache/minify/
        RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
        RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
        RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
        RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
        RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]

    </IfModule>

    [...]

</Directory>

Для повышения производительности я хочу отключить использование .htaccess на моем сервере и вместо этого использовать файл конфигурации httpd.conf, как вы видите выше.

Дело в том, что правило .htaccess, помещенное в конкретный каталог (/var/www/example.com/public/wp-content/cache/minify/), работает, но то же правило в моем файле httpd.conf не работает. т. Я не знаю почему. Что я здесь делаю не так?

Не уверен, что это лучший способ сделать это, но он работает. По сути, ему нужна RewriteEngine On правило во втором <Directory> раздел тоже.

Файл: /etc/apache2/httpd.conf

<Directory /var/www/example.com/public>
    AllowOverride None
    Options -MultiViews

    [...]

    <IfModule mod_rewrite.c>
        Options +FollowSymlinks
      # Options +SymLinksIfOwnerMatch
        RewriteEngine On
      # RewriteBase /
    </IfModule>

    [...]
</Directory>

<Directory /var/www/example.com/public/wp-content/cache/minify>
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /wp-content/cache/minify/
        RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
        RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
        RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
        RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
        RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]
    </IfModule>
</Directory>