Apache игнорирует RewriteCond и RewriteRule

Apache игнорирует RewriteCond и RewriteRule

Я схожу с ума. Apache полностью игнорирует и RewriteCondи RewriteRule. Я ожидал бы, что это приведет к ошибке, так как RewriteEngine не был установлен на On. У меня было много других RewriteCondи RewriteRuleстрок, которые работали нормально, и когда я проверил журнал Rewrite (я включил), он показал, что эти две пропускаются. Я обрезал все остальное, чтобы убедиться, что ничто из этого не вызывает проблему, и, конечно же, Apache счастливо не выдает ни одной ошибки с этой конфигурацией:

DocumentRoot /var/sites/public
<Directory /var/sites/public>
    AllowOverride None
    SetEnv APPLICATION_ENV production

    RewriteCond %{HTTP_HOST} !^$
    RewriteRule ^/(.*) http://www.example.com/$1 [L,R]

    Order allow,deny
    allow from all
</Directory>

Я почти уверен, что здесь есть какая-то очевидная ошибка, которую я ослепил, слишком долго на нее глядя. Любая помощь будет оценена по достоинству.

Примечания: У меня этого нет в Vhost. В конфигурации нет никаких Vhost. Я удалил RewriteCond, и он по-прежнему не выдает никаких ошибок. Я также пробовал это с RewriteEngine On.

решение1

Простой быстрый взгляд на него говорит мне, что RewriteCond не будет соответствовать ничему, кроме того, что кажется ничем. Не уверен, что mod_rewrite думает по этому поводу.

Что именно вы пытаетесь сделать с этим правилом?

Например, если вы хотите, чтобы он соответствовал любому домену, кроме (www.)example.com, и перенаправлял его на www.example.com, то у вас должно быть такое правило:

RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]

решение2

Вы также хотите это:

RewriteCond %{HTTP_HOST} .

...или записано по-другому:

RewriteCond %{HTTP_HOST}!=""

Так:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]

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