Вы можете сделать это с помощью .htaccess, предоставляя пользователям HTTP 403 - Запретный ошибку, если они пытаются получить доступ к ним:
RewriteRule ^/themes/shop/(.*)/html(.*) - [L,R=403]
Или, если вы предпочитаете 404 - Not Found:
RewriteRule ^/themes/shop/(.*)/html(.*) - [L,R=404]
Поскольку вы упомянули вы используете Symfony, вы должны также позаботиться, чтобы поместить правило в нужном месте, чтобы другие правила перезаписи не взять на себя:
<IfModule mod_rewrite.c>
RewriteEngine On
#Put them first, otherwise they might get routed elsewhere
RewriteRule ^/themes/shop/(.*)/html(.*) - [L,R=403]
#...
</IfModule>
В соответствии с комментариями и a gist linked by @basit: вы можете добавить дополнительные проверки, чтобы гарантировать, что любые запросы, сделанные для ресурсов: существуют, фактически являются файлом активов и содержатся только в папке с ресурсами.
# contents of the gist linked above - in case the link ever breaks
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} !^/themes/stores/(.*)
RewriteCond %{REQUEST_URI} !^/themes/shop/(.*)
RewriteRule .? - [L]
# allow stores asset folder only
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|svg|svgz|eot|otf|woff|woff2|ttf|swf|php|ico|txt|pdf|xml)$
RewriteCond %{REQUEST_URI} ^/themes/stores/(.*)/asset/.*
RewriteRule .? - [L]
# allow shop asset folder only
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|svg|svgz|eot|otf|woff|woff2|ttf|swf|php|ico|txt|pdf|xml)$
RewriteCond %{REQUEST_URI} ^/themes/shop/(.*)/asset/.*
RewriteRule .? - [L]
Мне удалось сделать это с помощью RequestCond с вашим фрагментом с небольшими дополнительными защитами. Если вы добавите следующий ответ, я бы принял его. https://gist.github.com/iBasit/e55b632ec62fcb844fd7 – Basit
@Basit, рад слышать фрагмент кода помог - я обновил свой ответ – HPierce