我希望将流量从Wordpress Multisite 的子域安装中重定向,除非来自特定的IP地址/范围,并且不会影响根域流量。这可能吗?
从概念上讲,我一直在想这样的事情:
# IF we're dealing with the subdomain
RewriteCond %{HTTP_HOST} subdomain\.example\.com [NC]
# AND the user is NOT from our allowed IP
RewriteCond %{REMOTE_ADDR} !111\.222\.333\.444
# THEN redirect them to the root domain
RewriteRule ^(.*)$ http://example.com/$1 [L,R=302]
换句话说,限制从不是来自定义的IP地址的所有流量访问子域。我真的只是为此学习了正则表达式和.htaccess,所以提前为任何明显错误的事情道歉。
我没有使用特定于目录的.htaccess执行此操作的原因是我正在使用Wordpress Multisite的子域安装,因此没有目录。它全部在URL中。
Wordpress本身带来的一些可能的并发症:
RewriteBase /
评估的是什么,或者它如何影响我的文件中的URI(如果这是正确的首字母缩略词)。编辑:
根据@Prix反馈,这是我正在使用的完整.htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain\.example\.com [NC]
RewriteCond %{REMOTE_ADDR} !111\.222\.333\.444
RewriteRule ^(.*)$ http://example.com/$1 [L,R=302]
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
这是Wordpress&#39;多站点默认规则,在RewriteBase /
之后立即包含我自己的添加项。我收录了@ hjpotter92的建议。
所需的影响是将所有流量从subdomain.example.com重定向到example.com,,除非来自特定的IP地址。这适用于主要使用部分Wordpress Multisite作为公司外联网的客户。
答案 0 :(得分:1)
规则看起来很好是,我唯一要改变的是:
RewriteRule ^(.*)$ http://example.com/$1 [L,R=302]
进入这个
RewriteRule ^ http://example.com/ [L,R=302]
由于您不希望在重定向上使用404,因为子域共享相同的DocumentRoot
,然后是的,它应该可以正常运行,因为我自己测试了它。
我希望在这一行:
RewriteCond %{HTTP_HOST} subdomain\.example\.com [NC]
您不会像http://
或除合格域名之外的任何内容添加噪音,例如intranet\.mydomainname\.com
没有斜线,没有http等。