O problema que você está tendo é que as diretivas <Location>
(e <LocationMatch>
) não operam em strings de consulta (o que vem depois do ?
) - Veja Essa pergunta SO & Os documentos do Apache .
Você pode realizar a mesma coisa usando mod_rewrite
e alguma criatividade - Há até mesmo um exemplo de controle de acesso com base na string de consulta nos documentos.
Algo ao longo das linhas do que está abaixo deve estar próximo do que você precisa.
# Applying for all query strings (admin|user)
RewriteCond %{QUERY_STRING} ^q=.*
RewriteCond %{REMOTE_ADDR} !0\.1\.2\.3
# Something is missing here (result: domain.com/page?q=admin) but it works because the link dies anyway on an error page
RewriteRule ^(.*) /page [QSA,L,R=301]