Regex - how to match everything except a particular pattern

apache-config, regex, ssl

Solution

Apache 2.2 and later has negative lookahead support in regular expressions. If you are using Apache 2.2 or later this should work:

RedirectMatch ^/(?!mycgi/cgi.php)(.*) https://www.mydomain.com/$1

Problem

I'm using Apache and I want to redirect all received request to the ssl virtual host. So I have the following line in the regular http virtual host: RedirectMatch (.*) https://www.mydomain.com$1 which basicaly replace $1 by everything. It works perfectly. But now, I need to access a particular CGI that cannot be on the SSL virtual host. So I would like to redirect all request, except the following: "http://www.mydomain.com/mycgi/cgi.php" I have search on this forum and found some post concerning regex exclusion, but none is working. Any help would be greatly appreciated. Thanks. Alain

Original source