This is all one line, but I divided it into readability
find /home
\( -wholename '/home/exception1'
-o -wholename '/home/exception2'
-o -wholename '/home/exception3' \)
-prune -o
-wholename '*/public_html/outdated' -type d
-exec rm -rvf \{} \;
Before running this, I highly recommend replacing the bit -exec rm -rvf \{} \;with -printto make sure that it prints only what you want to delete.
: find . \(... \)' matches directories you want to skip entirely (ie: prune). The standard pattern for using -prune is to say what you want to prune out, then -prune -o`, , .
public_html/outdated, -wholename '*/public_html/outdated' -type d. (-type d " " ).
, , . -print, , , .
: :
find: `/home/foo/public_html/outdated': No such file or directory
, find , . - , .