Назад | Перейти на главную страницу

Как изменить страницу индекса для одного 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. Является ли это возможным?

Вы можете просто повторить часть переднего контроллера и включить условие для вашего 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 к index.WP.php. Все остальные посетители переходят на фронт-контроллер по умолчанию. Это по-прежнему позволяет любому пользователю прямо запрос index.WP.php если они хотят (если они знают, что это существует).

ОБНОВИТЬ: Обратите внимание, что я изменил RewriteRule шаблон во-первых передний контроллер блокировать правила от . к ^ - это позволяет ему соответствовать корню документа, т.е. http://www.example.com/, поэтому он может переопределить значение по умолчанию DirectoryIndex.

ОБНОВИТЬ: Для «альтернативного» фронт-контроллера (через определенный IP-адрес) требуется особый случай для корня документа, чтобы переопределить DirectoryIndex (т.е. index.php). (Предыдущего обновления было бы недостаточно, поскольку корень документа, очевидно, является каталогом, поэтому предыдущее условие (!-d) по-прежнему не удается.)

RewriteRule (.*) http;//www.example.com/$1 [R=301,L]

Обратите внимание, что у вас есть ошибочная точка с запятой (;) после схема на вашем каноническом перенаправлении без www на 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");
}