Во-первых, я не уверен, что правильно понял ваш вопрос, но я все равно попробую.
В настоящее время у вас есть:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA,L]
Кроме того, вам нужно:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC]
RewriteRule XXXXXX/(.*)$ - [F,NC,L]
.htaccess RewriteRule
проверяются в порядке их появления, поэтому вы можете захотеть сделать что-то подобное, хотя я исправлен, потому что у меня не было возможности проверить, сработает ли это:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA]
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC]
RewriteRule XXXXXX/(.*)$ - [F,NC,L]
То есть, сначала проверьте, является ли это аргументированный файл с именем index.php, который должен быть переписан, если нет (без флага L
), перейдите к следующему правилу, сначала получив новое условие, затем, если правило проверяется, ограничить доступ (скинуть HTTP 403).
Имеет ли это смысл?
В любом случае, пожалуйста, поэкспериментируйте с приведенным выше примером .htaccess, потому что, как я уже сказал, я не смог его протестировать.