The *RewriteCond* directive defines conditions under which the rewriting should take place. h2. Syntax We should really encourage people to use the lexicographically equal operator instead of a [RegEx] if they want to ckeck, if _test string_ is lexicographically equal to _cond pattern_. E.g. using {noformat} RewriteCond %{HTTP_HOST} !="" {noformat} instead of {noformat} RewriteCond %{HTTP_HOST} . # or RewriteCond %{HTTP_HOST} !^$ {noformat} or using {{{RewriteCond \{REQUEST_URI\} !=/foo/bar }}} instead of {noformat} RewriteCond %{REQUEST_URI} !^/foo/bar$ {noformat} or {{{RewriteCond \{SERVER_PORT\} =443 }}} instead of {noformat} RewriteCond %{SERVER_PORT} ^443$ {noformat} *Note:* Conditions are being processed after the pattern of the [RewriteRule] has matched. This means that the Condition in following example would be useless (it's always true): {noformat} RewriteCond %{REQUEST_URI} \.html$ RewriteRule \.html$ - [G] {noformat} While this one wastes performance: {noformat} RewriteCond %{REQUEST_URI} ^/([^.]*)\.html$ RewriteRule ^/(.*) /%1.php [PT] {noformat} Every Request matches the rule-pattern and after that the condition will be checked. But you can easily check the uri value in the rule-pattern, so that there is no need for such a condition here: {noformat} RewriteRule ^/([^.]*)\.html$ /$1.php [PT] {noformat} h2. Examples See [ConditionalRewrites]
  • No labels