如何更改一个 IP 地址的索引页?

如何更改一个 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。可以吗?

答案1

您可以重复前端控制器部分并包含 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>

203.0.113.111这将仅将 IP 地址为 的用户路由到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 重定向上。

答案2

您可以将以下代码放入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");
}

相关内容