【问题标题】:Redirect non-www to www except subdomains by .htaccess通过 .htaccess 将非 www 重定向到除子域之外的 www
【发布时间】:2015-08-29 07:18:34
【问题描述】:

有几个这样的问题,但我的问题有点不同

Redirect non-www to www in .htaccess

force non www to www in htaccess

Redirect Non-WWW to WWW URLs

我想将网站的非 www 版本重定向到 www,但它不应该以任何方式影响子域,所以

www.example.com => www.example.com
example.com => www.example.com
sub1.example.com => sub1.example.com
sub2.example.com => sub2.example.com

这不起作用,因为它在子域的情况下表现不佳

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

这个解决方案很好用

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L] 

然而,重要的是我不想在 htacess 中硬编码域名。如何(如果可能的话)在一般情况下进行上述重定向 - 没有提到确切的域名?

谢谢

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    你可以使用这条规则:

    RewriteCond %{HTTP_HOST} ^[^.]+\.com(\.au)?$ [NC]
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
    

    【讨论】:

    • tks for the asnwer:它不起作用,但也许是因为我有域 example.com.au ?是否可以使其同时适用于example.com 和example.com.au 类型的域?
    • 它有效,但我们可以概括 com 和 au 部分吗?我的意思是我尝试过这样RewriteCond %{HTTP_HOST} ^[^.]+\.[a-z]{2,3}(\.[a-z]{2})?$ [NC],它有效,但它的语法是否正确? tks
    • 嗯,您的正则表达式并非 100% 万无一失,无法检测到非子域。例如,它将匹配 bbc.co.uk 这是一个子域。
    • 好的,我明白了,无论如何这已经足够了,感谢您的帮助和时间)))
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多