Você poderia apenas repetir a parte do controlador frontal e incluir uma condição para o seu endereço IP. Por exemplo:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
### ALTERNATIVE FRONT CONTROLLER FOR SPECIFIC IP ADDRESS
RewriteRule ^index\.WP\.php$ - [L]
# Special case for document root to override DirectoryIndex
RewriteCond %{REMOTE_ADDR} =203.0.113.111
RewriteRule ^$ /index.WP.php [L]
# Route all other requests for specific IP address
RewriteCond %{REMOTE_ADDR} =203.0.113.111
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.WP.php [L]
### DEFAULT FRONT CONTROLLER FOR ALL OTHER USERS
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Isso só encaminhará o usuário com o endereço IP 203.0.113.111
para index.WP.php
. Todos os outros visitantes são passados para o front controller padrão. Isso ainda permite que qualquer usuário diretamente solicite index.WP.php
se quiser (se souber que existe).
UPDATE: Note que eu mudei o padrão RewriteRule
no primeiro bloco de regras .
to ^
- isso permite que ele corresponda à raiz do documento, ou seja. http://www.example.com/
, para que possa substituir o padrão DirectoryIndex
.
UPDATE: Para o front controller "alternativo" (através do endereço IP específico), é necessário um caso especial para a raiz do documento para substituir o DirectoryIndex
(ex. index.php
). (A atualização anterior não teria sido suficiente já que a raiz do documento é obviamente um diretório, então a condição anterior ( !-d
) ainda falha.)
RewriteRule (.*) http;//www.example.com/$1 [R=301,L]
Observe que você tem um ponto-e-vírgula errado ( ;
) após o esquema em seu redirecionamento canônico não www para www.