【问题标题】:Perform AND on two rewrite conditions in rewrites在重写中对两个重写条件执行 AND
【发布时间】:2014-02-05 17:00:52
【问题描述】:

我有两个重写条件。

条件 A

RewriteCond %{HTTP_HOST} ^mobile.nu$ [NC]

条件 B

RewriteCond %{HTTP_USER_AGENT} (android|blackberry|iphone|ipod|windows\ phone) [NC]

重写规则。

重写规则 ^foo.html$

现在我想写一些这样的条件。

如果条件 A 和条件 B 则重定向到给定规则

谁能告诉我如何做到这一点

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    你可以使用这条规则:

    RewriteCond %{HTTP_HOST} ^mobile\.nu$ [NC]
    RewriteCond %{HTTP_USER_AGENT} (android|blackberry|iphone|ipod|windows\ phone) [NC]
    RewriteRule ^foo.html$ /mobil/index.html [L]
    

    condition1 和 condition2 将被 ANDed 在一起。

    尽管您的RewriteRule 在您的问题中并不完整。

    【讨论】:

    • 谢谢.. 实际上我正在将 mobil.nu 上的 dns 更改为 test.com。我计划在 test.com 网络服务器中编写这些规则。我需要改变什么吗。将 mobil.nu 的 DNS 更改为 test.nu 后,我应该将所有请求重定向到 test.nu/mobil/index.html
    • 我根据您的评论更新了答案。现在看起来很好。我相信在 DNS 更改后 mobile.nu 将成为 test.com 的 CNAME。
    • 我是否需要在规则中也包含 CNAME。你能告诉我怎么做吗?
    • CNAME 是人们最终为旧的退休 dns 条目创建的名称,以避免使用旧的 dns 书签失去客户。您还可以使用 301 规则将人员迁移出旧域。
    • 是的,规则不需要任何更改,是的,在进行 DNS 更改时需要注意 CNAME。 (我不是服务器管理员,所以只知道非常基本的)。
    【解决方案2】:

    你只需在规则之前按顺序写下这些条件:

    RewriteCond %{HTTP_HOST} ^mobile.nu$ [NC]
    RewriteCond %{HTTP_USER_AGENT} (android|blackberry|iphone|ipod|windows\ phone) [NC]
    RewriteRule ^foo.html$ [rewrite rule]
    

    这在两个条件之间施加了AND 关系

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多