【问题标题】:htaccess mod rewrite - force www on domain only but not subdomainshtaccess mod rewrite - 仅在域上强制 www 而不是子域
【发布时间】:2014-09-12 23:13:28
【问题描述】:

我想强制使用 www。仅在主域上,但不要在所有子域上。 这是我到目前为止的代码,它有效,但不适用于子文件夹。

我使用的域名是 .co.uk

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

domain.co.uk 重定向到 www.domain.co.uk 而 sub.domain.co.uk 没有(这是正确的) 但 domain.co.uk/folder/ 不会重定向到 www.domain.co.uk/folder/

【问题讨论】:

    标签: apache .htaccess mod-rewrite subdomain


    【解决方案1】:

    尝试使用%{REQUEST_URI} 而不是$1,因为$1 可能会因.htaccess 的目录而异:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^[^.]+\.co\.uk$ [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
    

    还要确保这是您的 .htaccess 中的第一条规则。

    【讨论】:

    • 这并没有比我最初发布的更好,子文件夹仍然不强制 www。
    • 您需要确保这是根 htaccess 中的第一条规则。
    • 是的,这是第一条规则,它的根。它不适用于子文件夹,它仅适用于没有任何子文件夹的根域。
    • 规则是 100% 正确的,并且适用于我的许多实时网站/博客。你确定你使用的是 Apache 吗?尝试在您的 .htaccess 中仅使用此规则的新浏览器中进行测试
    • 是的,它是 apache,这是我的 htaccess 中除第 4 行的 Options -Indexes 之外的唯一规则。它可以正常工作并正确使用该规则,但仅限于 domain.co.uk .如果我写 domain.co.uk/folder 它不会添加 www.
    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 2015-07-18
    • 2015-05-07
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多