【问题标题】:How to redirect www to non-www https?如何将www重定向到非www https?
【发布时间】:2019-03-21 10:31:19
【问题描述】:

我已经在我的域上安装了 https。所有这些案例都可以在我的网站上找到:

http://example.com        // will be redirected to https://example.com
https://example.com
http://www.example.com    // will be redirected to https://www.example.com
https://www.example.com

看到了吗?一切都将使用 https 协议。一切都好。


现在我需要将所有www 重定向到non-www。所以http://www.example.comhttps://www.example.com应该重定向到https://example.com(换句话说,所有情况都应该重定向到这个)

这是我当前在/etc/apache2/sites-avalible/000-default.conf中的代码:

<VirtualHost *:80>
.
.
.
RewriteEngine on
RewriteCond %{SERVER_NAME} =lamtakam.com [OR]
RewriteCond %{SERVER_NAME} =www.lamtakam.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]               -- this
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]              -- and this are for www redirection
                                                        -- but doesn't work
</VirtualHost>

有什么想法吗?

lamtakam 也是我所说的确切域名,如果您需要检查的话。


编辑:

目前我在项目根目录的.htaccess 文件中有这个:

RewriteEngine on

Options -Indexes

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# this doesn't work on some version of xampp
# RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

RewriteRule ^([\s\S]*)$ index.php?rt=$1 [L,B,QSA]

ErrorDocument 404 /error404.html

【问题讨论】:

    标签: apache ubuntu-16.04 no-www


    【解决方案1】:

    如果您想要 VirtualHost 中的规则,那么它将是 2 组规则。如果您可以在站点根目录 .htaccess 中保留规则,那么它将是一条规则。我在这里提供 .htaccess 规则:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
    RewriteCond %{HTTPS} !on
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
    

    确保删除上面VirtualHost 中显示的现有规则,并在新浏览器中进行测试以避免旧浏览器缓存。

    【讨论】:

    • 啊谢谢.. 只是一件事,我应该删除Virtualhost 中的所有Rewrite 行吗?您的代码是否同时支持 http 到 https 重定向和 www 到非 www 重定向?
    • 另外请看一下我的问题的 edit 部分。
    • 由于您已经有一个 .htaccess,因此将此规则放在 RewriteEngine 行的下方,并删除 Virtualhost 中以 Rewrite 开头的每一行。是的,当然这条规则会同时处理 http -&gt; httpswww 的删除。
    • 是的,这对我来说是正确的。也许你可以在RewriteEngine之前移动ErrorDocumentOptions
    • 我已经测试了您的规则并且运行良好,与我的预期结果完全相同。太感谢了。另外供我参考(另一个问题):当我上传我的网站时,.htacess 文件对于 apache 是不为人知的。我在/etc/apache2/sites-availible/000-default.conf 文件中添加了this,然后.htaccess 工作了。现在我想知道,我可以把this 也放在.htaccess 里面吗?
    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多