This issue seems to keep coming back, so I figured it was time to submit a feature request. The option "Show on only the listed pages" in the block configuration's "Page specific visibility settings" is very useful, but I often find that I need a way of specifying exceptions to this rule, for which I end up writing code.
This is what I propose for "Page specific visibility settings" in block configuration:
Show block on specific pages:
* Show on every page.
* Show on only the listed pages.
* Do not show on the listed pages.
This way, you can not only specify exceptions to "Show on every page" but also to "Show on only the listed pages."
"Show on every page" - show on every page except those that match "Exceptions"
"Show on only the listed pages" - show on only the pages listed in "Pages," except those that match "Exceptions"
If "Show on only the listed pages" is selected and the "Pages" box is empty, the block is never displayed.
Show if the following PHP code returns TRUE (PHP-mode, experts only) - show if the PHP code in "Pages" returns TRUE, except for those pages that match "Exceptions" (hey, why not?)
This feature, combined with the new role-based block display feature, should maximize the flexibility of block configuration.