我在这里遇到了一些麻烦。 我有两个接口和两个不同的IP地址的wordpress内联网服务器。 这台服务器是私有的MPLS,没有DNS服务器。 而不是域名用户使用IP。
我想重写htaccess中的一个我的子网地址,所以它使用redirect规则是这样的:
RewriteEngine On RewriteBase / RewriteCond %{REMOTE_ADDR} ^10\.71\.(([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-4]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|255\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-4])))$ RewriteRule ^(.*)$ http://10.71.2.246 [R=301,L]
此规则不起作用。
远程地址正则expression式应该是地址范围10.71.0.1
– 10.71.255.254
我有这几个重写规则,我认为不起作用。
我的问题是,当我想从10.71.xx范围访问附加到网站的一些媒体,它将我redirect到10.1.2.xx这是第二个子网。 这个文件是从10.1.2.xx子目录上传的,所以它已经被硬链接到了10.1.2.180/xxxxxxx.pdf
所以过程如下 –
eg <a href="http://10.1.xy/mediafile.pdf">...</a>
对于这个问题,一个htaccess重写将无法正常工作。 当用户从服务器请求一个path,并且您希望将它们引导到不同的path时,重写非常有用。 在你的情况下,客户端点击一个他们无法到达的链接,所以请求永远不会把它重新写入服务器。
在浏览器中手动将IP从10.1.xy更改为10.71.xy(如前面的回答中的评论)完全否定了重写的需要。 (事实上,如果重写工作,你可能会进入一个redirect循环,因为每一个请求将来自一个10.71地址,匹配的条件,并得到重写)
正如我所看到的,有几个选项 –
http://some.intranet.url
,并将其parsing为正确的IP地址。 这就意味着要更新Wordpress来使用这个URL,这也可能需要使用插件来查找和重写数据库中的旧URL。 (再次,WordPress的确喜欢在整个地方塞满完整的URL)。 选项3有点丑,但可能是最简单的select。 它只是意味着find一个插件,可以扫描http://10.abc
的页面,并将其删除,以便链接到http://10.1.2.3/media/file.pdf
变成/media/file.pdf
。 (注意:根据您的设置,可能需要调整一下,以确保它重写所有需要的链接,但没有它不)
远程地址正则expression式应该是地址范围
10.71.0.1
–10.71.255.254
你的正则expression式可以大大简化。 相反,我会把它看作是从10.71
开始的任何IP地址,但不包括10.71.0.0
和10.71.255.255
这看起来就是你所描述的。 (?)
RewriteEngine On RewriteCond %{REMOTE_ADDR} ^10\.71 RewriteCond %{REMOTE_ADDR} !^10\.71\.0\.0$ RewriteCond %{REMOTE_ADDR} !^10\.71\.255\.255$ RewriteRule ^ http://10.71.2.246%{REQUEST_URI} [R=302,L]
我假定你想要redirect和维护URLpath,而不是将所有请求redirect到文档根目录?
这是一个302
(临时)redirect。 只有在确定工作正常后才能更改为301
(永久)。 确保在testing之前清除浏览器caching。
但是,这似乎有点奇怪… REMOTE_ADDR
是连接到站点的用户的本地IP地址(假设没有涉及代理服务器),但是您redirect到一个相同的IP地址?