我已在网站上安装了另一个主题,我需要改进它。如何仅针对我的 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");
}