Ваше первое правило для точечных файлов в порядке, но было бы лучше с другой стороны, поскольку вторая часть может соответствовать только началу, а первая - только в подкаталогах.
RewriteRule ^\.(?!well-known/)|/\. - [F]
Проблема вашего другого правила в том, что вы ожидаете, что оно будет соответствовать поддомену. RewriteRule
не работают со всей строкой, которую вы видите в адресной строке вашего браузера, только с частью пути, а в .htaccess
они видят еще меньше, так как ведущий каталог также удаляется. Чтобы получить доступ к нужной информации, используйте RewriteCond
:
RewriteCond %{HTTP_HOST} ^([^-]++)-([^-.]++)\.example\.com$
RewriteRule ^(?!project/show/).* project/show/%1/%2/$0 [L,DPI]
(Вам не нужно включать \.example\.com$
, если ваш основной домен не содержит дефисов.)