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