【问题标题】:Remove www but do not affect subdomain (htaccess)删除 www 但不影响子域 (htaccess)
【发布时间】:2013-09-04 08:35:05
【问题描述】:
RewriteCond %{HTTP_HOST} !^mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]

这会从 URL 中删除 www。

如果没有规则,子域可以工作 (blog.site.com)。使用该规则,它会转换回 (site.com/blog) 并显示 404 错误。

我需要做些什么来防止这影响子域?

另外,我很好奇是否删除 www。是好事吗?我听说只要你选择一个并坚持下去就可以了。我也在使用<link rel="canonical" ... /> 来重新执行它。

【问题讨论】:

    标签: .htaccess mod-rewrite subdomain canonical-link


    【解决方案1】:

    (blog\.)? 在开始博客。变为可选的,因此仅当它不同于 blog.mysite.commysite.com 时才会重定向。

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

    另一种方法是:

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

    这意味着如果主机名不同,则 mysite.comblog.mysite.com 重定向。

    为避免重复,最好在 www 或非 www 之间进行选择,并为此重定向所有内容。

    因此,如果您使用 www,则将非 www 重定向到 www,反之亦然。

    【讨论】:

    • 太棒了,谢谢。在我尝试的过程中缺少\ ?
    • ? 使前一个组或字符可选,因此它匹配一个或另一个:) 非常方便。
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2015-10-16
    • 2017-07-31
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多