Search code examples
regexsslapache-config

Regex - how to match everything except a particular pattern


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


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