2017-06-06 270 views
0

如何在我的网站上强制使用HTTPS?我尝试了this答案的解决方案,但由于某种原因,当我通过单击链接访问索引页时(它在将这些代码行添加到.htaccess中之前工作正常),我被重定向到父目录。另外,当我尝试使用HTTP访问我的网站时,它可以让我做到这一点。我错过了什么?使用.htaccess强制HTTPS

+2

听起来像是你有怎样的问题尾部或丢失的斜线由a)该答案和b)您的设置处理。 – arkascha

+1

将'.htaccess'文件的内容添加到您的问题中。 “当我尝试使用HTTP访问我的网站时,我访问索引页面”/“时将其重定向到父目录,它允许我这样做” - 是否重定向? – MrWhite

回答

1

使用Apache,你有几种选择 - 包括.htaccess。

看看这里:

每文档,最好的办法是使用内部的非安全VirtualHost一个Redirect指令:

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerName mysite.example.com 
    DocumentRoot /usr/local/apache2/htdocs 
    Redirect permanent /secure https://mysite.example.com/secure 
</VirtualHost> 

<VirtualHost _default_:443> 
    ServerName mysite.example.com 
    DocumentRoot /usr/local/apache2/htdocs 
    SSLEngine On 
# etc... 
</VirtualHost> 

这里是一个.htaccess示例,来自同一链接:

Redirect permanent /login https://mysite.example.com/login 

最后,看看这里的其它故障排除提示(例如,忘记“了NameVirtualHost *:443”来打开名为虚拟主机的端口443):

Why might Apache ignore a virtual host with a ServerName matching the requested URL?

+0

如果我使用'重定向永久/登录https:// mysite.example.com /登录',它给了我这个错误:'ERR_TOO_MANY_REDIRECTS'。另外,我使用altervista.org来托管我的网站,所以我不知道确切的文件位于哪里。 – sgrontflix

+0

不知道为什么那篇文章似乎暗示使用'.htaccess'中的'Redirect'来执行HTTP到HTTPS重定向 - 这确实会导致重定向循环(除非目标URL是不同的服务器,这不太可能)? (是的,'Redirect'可以在'.htaccess'中使用,但不能用于这个目的。)如果你在'.htaccess'中这样做,那么你需要使用mod_rewrite,因为你需要_need_来检查当前请求是HTTP或已经是HTTPS。 – MrWhite

+0

@ user82217我跟随了[this](https://wiki.apache.org/httpd/RewriteHTTPToHTTPS)链接中的第二个示例,但它似乎也不起作用。有什么建议么? – sgrontflix