【问题标题】:htaccess: exluce some domain in RewriteCondhtaccess:在 RewriteCond 中排除某些域
【发布时间】:2011-04-13 14:51:24
【问题描述】:

这是我的 .htaccess 代码 所以如果用户类型只是 domain.com 将被重定向到 www.domain.com

RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

我现在的问题是我有一个指向相同域路径的新域 所以即使是新域也被“透明地”重定向到 domain.com...

如何从该规则中排除某些域名?

谢谢!

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    您可以尝试将重写设为通用,这样所有不是以 www 开头的请求都会被重定向,而是在正确/请求的域上。

    RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
    

    或者,您可以检查域是否以 domain.com 开头:

    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com [L,R=301]
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的出色回答。你能逐部分描述代码吗?只是第一个代码。
    • 很好的答案。详细解释您的语法将使这成为一个 优秀 的答案。只是说。 :)
    • OP 试图将多个域重定向到同一路径,但原始的 RewriteCond 专门寻找单个域(例如 www.domain.com)。我的第一个示例,会将任何不以www. 开头的域重定向到带有www. 前缀的请求路径。 RewriteRule 通过使用RewriteCond 中正则表达式的第一组来实现这一点,这就是%1 完成的工作。 $ 用于引用RewriteRule 表达式的组,而% 用于引用RewriteCond 的组。希望能澄清事情。
    • [NC] 是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多