.htaccess 中使用域名进行条件重定向

.htaccess 中使用域名进行条件重定向

我想使用基于域的规则在 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匹配每一个网址!

相关内容