Apache URL aliases not working with the visibility settings for blocks
If example.com/product/efg is a path alias, then you need to use the path that uses that alias in the block visibility settings.

For example, if example.com/product/efg is the alias for example.com/node/1, then you need to add node/1 in the list of pages where the block should not be shown.

If you have more path aliases for the same internal URL, then instead of setting the pages where the block should not be shown, you need to use PHP code that returns TRUE when the block needs to be shown. Code similar to the following one should work:

&lt;?php
  return request_uri() != '/product/efg';
?&gt;


If Drupal is executed in a subdirectory of the web server root directory, e.g. dr6, the code needs to be modified as follows:

&lt;?php
  return request_uri() != '/dr61/product/efg';
?&gt;


The reason I didn't use drupal_get_path_alias() is that the function returns just one of the path aliases existing for the internal path passed as argument; in the case there are more path aliases, this would be a problem.