2017-02-09 98 views

回答

1

互联网充满了解决方案。所有这些例子都没有回答你的问题?

您无法以可靠的方式在单个步骤中完成这两个重写。相反,你需要两个步骤:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [END,R=301] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [END,R=301] 

注:如果您使用的是你有L标志更换END标志一个很老的HTTP服务器的版本,应该工作一样在这种情况下。


而且一般提示:你应该总是喜欢将这种规则的HTTP服务器主机的配置里面,而不是使用动态配置文件(“的.htaccess”)的。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅作为最后一种选择,用于您无法控制主机配置的情况(阅读:真正便宜的托管服务提供商),或者您拥有依赖编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。

+0

我很感激你对这个问题的所有评论,但现在最简单的方法就是使用.htaccess。一旦我以这种方式工作,我将深入研究主机配置。顺便说一句:我试过你的代码,但我得到内部服务器错误。 –

+0

建议我必须使用L而不是END –

+0

当然,这意味着您使用的是旧版本的Apache http服务器。只要你不会干涉其他重写规则,这样就可以正常工作。 – arkascha