htaccess - Можно ли это сделать? (Вложенные IfModules)

htaccess - Можно ли это сделать? (Вложенные IfModules)

Я пытаюсь выполнить перенаправление на URL, если тест модуля пройден.

Что-то вроде этого (что, похоже, мне не подходит.)

Возможно, это просто невозможно. Кто-нибудь?

<IfModule mod_rewrite.c>
    <ifModule mod_gzip.c>
        RewriteEngine On
        RewriteRule ^/mod_gzip/?$ mod_gzip-is-enabled.php
    </IfModule>
</IfModule>

решение1

Вложенные <IfModule>контейнеры — не ваша проблема (да, это возможно). (Но <IfModule mod_rewrite.c>нужен ли внешний контейнер?)

Ваша проблема в том, чтоRewriteRule шаблон ^/mod_gzip/?$:

RewriteRule ^/mod_gzip/?$ mod_gzip-is-enabled.php

Это никогда не будет соответствовать контексту каталога .htaccessиз-за префикса слеша в имени.RewriteRule шаблон. Вам нужно удалить его, вот так:

RewriteRule ^mod_gzip/?$ mod_gzip-is-enabled.php [L]

Для того чтобы сопоставить запрошенный URL-адрес формы /mod_gzip/(или /mod_gzip).

В файлах каталогов .htaccessURL-путь, которыйRewriteRule шаблонсовпадений против меньшепрефикс каталога, который, в частности, заканчивается косой чертой. Таким образом, URL-путь, который сопоставляется, никогда не начинается со слеша. (Это отличается от случая, когда директивы используются в контексте сервера или виртуального хоста.)

Кроме того, вам, вероятно, следует включить Lфлаг на случай, если у вас есть другие директивы.

Связанный контент