我想使用基于域的规则在 Apache 中进行重定向。例如
如果用户从example.com
或另一个相关页面(example.com/another-url/
)访问该页面,则重定向到example.com/page.html
。否则,显示正常页面。
我写在.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^example.com
RewriteRule .* /page.html [R=302,L]
</IfModule>
但它不起作用。
答案1
想必您的这个帐户上有多个域名?
要重定向example.com/
或example.com/another-url/
到example.com/page.html
,您可以执行以下操作.htaccess
:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(|another-url/)$ /page.html [R=302,L]
服务器HTTP_HOST
变量包含所请求的主机。该模式^(|another-url/)$
匹配空的 URL 路径(即文档根目录)或another-url/
(减去目录前缀)。
RewriteCond %{REMOTE_ADDR} !^one.domain.com RewriteRule .* /page.html [R=302,L]
这将重定向一切至/page.html
。您原来的指令存在的问题...
REMOTE_ADDR
是发出请求的客户端 IP 地址,而不是主持人正在被请求。!
上的前缀条件模式否定正则表达式。因此,在上面的例子中,REMOTE_ADDR
当不是example.com
.(永远正确。)- 模式
.*
RewriteRule
匹配每一个网址!