Я установил на свой сайт еще одну тему, и мне нужно ее улучшить. Как я могу изменить индексный файл только для моего IP-адреса?
Мой текущий файл htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Мне нужно изменить индексный файл на index.WP.php
для IP-адреса 203.0.113.111
. Возможно ли это?
Вы можете просто повторить фронтальную часть контроллера и включить условие для вашего IP-адреса. Например:
<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>
В этом случае пользователь будет перенаправлен только с IP-адресом 203.0.113.111
на индекс.WP.php
. Все остальные посетители попадают на фронтальный контроллер по умолчанию. Это все еще позволяет любому пользователю напрямую запрашивать index.WP.php
, если он хочет (если он знает о его существовании).
UPDATE: Обратите внимание, что я изменил шаблон RewriteRule
pattern на первом блоке правил front controller с .
на ^
- это позволяет ему соответствовать корню документа, т.е. он совпадает с корнем документа. http://www.example.com/
, поэтому он может переопределить стандартный DirectoryIndex
.
UPDATE: Для "альтернативного" фронтального контроллера (через определенный IP-адрес) для переопределения DirectoryIndex
(т.е. index.php
) для корня документа требуется специальный регистр. (Предыдущего обновления было бы недостаточно, так как корень документа, очевидно, является каталогом, поэтому предыдущее условие (!-d
) все еще не выполнено)
RewriteRule (.*) http;//www.example.com/$1 [R=301,L]).
Обратите внимание, что у вас ошибочная точка с запятой (;
) после схемы на вашем каноническом не-www перенаправлении.
Вы можете поместить нижеприведенный код в свой файл index.php
. И изменить 203.0.113.111
на ваш публичный/статический IP и изменить URL-адрес местоположения. Это решит вашу проблему
if($_SERVER['REMOTE_ADDR']=='203.0.113.111' || $_SERVER['HTTP_X_FORWARDED_FOR']=='203.0.113.111')
{
header("Location: http://www.example.com/yourindex.php");
} else {
header("Location: http://www.example.com/index.php");
}