.htaccess 如何将来自特定IP地址的请求重定向到另一个有htaccess的站点?

gev0vcfq  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(117)

我将把一些来自特定IP地址的请求重定向到另一个站点。例如,如果请求来自xxx.xxx.xxx.xxxxxx.xxx.xxx.xxy,我将重定向到https://example.com,对于其他站点,我将显示我的index.php
所以我试着这样做,但这行不通。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REMOTE_ADDR} xxx.xxx.xxx.xxx
    RewriteCond %{REMOTE_ADDR} xxx.xxx.xxx.xxy
    RewriteRule ^ https://example.com [L,R]
   
</IfModule>

请帮帮我。

vwkv1x7d

vwkv1x7d1#

您可以在站点根目录.htaccess中使用此代码:

DirectoryIndex index.php
RewriteEngine On

RewriteRule ^index\.php$ - [L,NC]

RewriteCond %{REMOTE_ADDR} ^xxx\.xxx\.xxx\.xxx$ [OR]
RewriteCond %{REMOTE_ADDR} ^xxx\.xxx\.xxx\.xxy$
RewriteRule ^ https://example.com [L,R]

这里需要注意的重要事项是使用[OR]子句来匹配任何给予的IP地址,并使用锚+转义点来准确匹配IP。

jhiyze9q

jhiyze9q2#

要解决这个问题,你需要使用"OR"操作符将两个RewriteCond语句合并成一个语句。下面是你的代码的更新版本:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REMOTE_ADDR} ^(xxx\.xxx\.xxx\.xxx|xxx\.xxx\.xxx\.xxy)$ [NC]
    RewriteRule ^ https://example.com [L,R]
    RewriteRule ^ index.php [L]
</IfModule>

为清楚起见:RewriteCond语句检查远程IP地址是否与"www.example.com"或"xxx.xxx.xxx.xxxy"匹配。xxx.xxx.xxx.xxx" or "xxx.xxx.xxx.xxy".
正则表达式模式括在括号中,"OR"运算符用于分隔两个IP地址值。
"NC"标志用于使IP地址模式不区分大小写。
因此,如果条件为真,则应用第一个RewriteRule以重定向到"www.example.com",并且如果条件为假,则应用第二个RewriteRule以显示"index.php"文件。https://example.com". and if the condition is false, the second RewriteRule is applied to show the "index.php" file.

相关问题