If you don’t have to change your rules often, you should put them in httpd.conf and disable the overrides in the top directory to which your rules apply.
AllowOverride None
Without overriding, your apache will not scan every directory for .htaccess files, doing less overhead for each request.
If you need to change your rules, you will have to restart the apache server if you put it in your httpd.conf, unlike they are instantly detected in .htaccess files because they read them all for each request.
You can easily do this using a graceful restart using the apachectl tool to avoid disconnecting current current requests.
apachectl graceful
If you are not going to disable undo, you can just use .htaccess only.
Edit in response to your edit:
Say you have a request at www.example.com/dir1/dir2/dir3/file
Apache will look for the .htaccess file in all three of these directories and the root directory for the rules that will be applied to the request if you override it.
source share