Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess中的通用IP规范化解决方案_Apache_.htaccess - Fatal编程技术网

Apache .htaccess中的通用IP规范化解决方案

Apache .htaccess中的通用IP规范化解决方案,apache,.htaccess,Apache,.htaccess,我正在寻找一个通用的IP规范化解决方案,它不会在我的htaccess文件中硬编码IP地址。我通常在AmazonEC2实例上运行我的应用程序,IP地址经常变化。我讨厌每次都要手动更新htaccess。具体来说,我正在寻找htaccess规则,这些规则将匹配通过ip地址访问的页面,并执行301重定向到实际域 我假设您没有任何子域。下面应该可以做到这一点: Options +FollowSymLinks RewriteEngine on # 1 RewriteCond %{HTTP_HOST} . #

我正在寻找一个通用的IP规范化解决方案,它不会在我的htaccess文件中硬编码IP地址。我通常在AmazonEC2实例上运行我的应用程序,IP地址经常变化。我讨厌每次都要手动更新htaccess。具体来说,我正在寻找htaccess规则,这些规则将匹配通过ip地址访问的页面,并执行301重定向到实际域

我假设您没有任何子域。下面应该可以做到这一点:

Options +FollowSymLinks
RewriteEngine on
# 1
RewriteCond %{HTTP_HOST} .
# 2
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
# 3
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
这将重定向对除实际域2之外的所有资源3的任何内容1的请求

编辑:对于子域,则以下操作应有效:

# If it's one of the domains of the IP address …
RewriteCond %{HTTP_HOST} ^domain\.com [OR]
RewriteCond %{HTTP_HOST} ^111\.222\.222\.111
# … then redirect request for all resources.
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

你有没有考虑过用一些不同的替代品?这将使IP地址频繁更改,同时保持相同的DNS名称。

我确实有子域。我实际上在DNS中有一个通配符条目。因此,我必须使用某种正则表达式来检查IP模式并重定向到规范域。@VinnyD在这种情况下,您可以更改为条件以检查域或IP地址,然后重定向。我已经用这个例子修改了上面的内容。对不起,我不清楚。问题是amazon负载平衡器的IP地址可能会在不通知的情况下更改。是否有任何方法可以使用正则表达式条件匹配IP以捕获任何可能的IP?请尝试
^((?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9][0-9]?){3}(:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]$
而不是
^111\.222 111
我想这样做的原因是为了搜索引擎优化,所以我不会重复内容。