Как изменить страницу индекса для одного IP-адреса?

Я установил на свой сайт еще одну тему, и мне нужно ее улучшить. Как я могу изменить индексный файл только для моего 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 . Возможно ли это?

4
задан 31 December 2016 в 13:45
2 ответа

Вы можете просто повторить фронтальную часть контроллера и включить условие для вашего 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 перенаправлении.

.
4
ответ дан 3 December 2019 в 03:28

Вы можете поместить нижеприведенный код в свой файл 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");
}
0
ответ дан 3 December 2019 в 03:28

Теги

Похожие вопросы