【问题标题】:Setting up a .htaccess file subdomains but also non www. to www设置一个 .htaccess 文件子域,但也非 www。到 www
【发布时间】:2016-11-02 16:18:21
【问题描述】:

我们有一个使用各种子域的 Opencart 网上商店设置。我正在尝试配置我们的 .htaccess 文件以执行以下操作,但无法完成。

我们的网站是这样设置的:

主域:

ourdomain.com

子域 x 10

sub1.ourdomain.com

sub2.ourdomain.com

sub3.outdomain.com

以下是必须发生的事情:

所有访问 http 版本的主域或子域的访问者都必须重定向到 https。

任何子域的访问者都必须重定向到https://subdomain.ourdomain.com,但没有 www。

访问https://ourdomain.com 的访问者必须重定向到https://www.ourdomain.com

基本上,我总是需要将主域的访问者定向到 www。版本以确保 CSS 文件正确呈现。如果 www. 图标和图形丢失。不见了。

我目前已将其配置为将所有访问者重定向到 https,但我不知道如何应用 www。只到主域。

希望一切都有意义。

我当前的代码:

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

【问题讨论】:

    标签: .htaccess redirect https


    【解决方案1】:

    你可以使用这些规则:

    RewriteEngine on
    
    #Redirect "http://sub.example.com" to "https://sub.example.com"#
    RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.example\.com$ [NC]
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
    #Redirect "http://example.com" or "http://www.example.com"  to "https://www.example.com"#
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR]
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
    RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]
    

    在上面的 RewriteConds 中将 example.com 替换为 yourdomain.com

    【讨论】:

    • 感谢您的回复。我们快到了,但您上面的代码将 sub1.mydomain.com 指向 www.sub1.mydomain.com,这不好。我将尝试理解你的代码,看看我是否能在此期间自己弄清楚。如果我在你有机会回复之前解决它,我会在这里发帖。
    • @Rhorne 抱歉,第二次 RewriteCond 中有错字。实际上,它是将您的子域覆盖到主域。我已经更新了条件。请查看编辑。
    • starkeen 我现在有另一个问题,这是强制我的网站的所有版本进入 https:// 的结果 - 图形和图标显示为方形图标,表明缺少链接。在研究这个问题时,我遇到了以下修复,但这似乎对我不起作用,我能麻烦您看看是否需要修改以匹配您的重写规则? # 修复图标 标题集 Access-Control-Allow-Origin "*"
    • 其实不用担心。这引发了与 Opencart 相关的一系列其他问题,因为我的 SEO 友好 URL 不再起作用,并且每个子域中的每个产品现在都重定向远离子域。这将需要更多的工作。
    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多