在.htaccess中强制使用WWW和HTTPS(SSL)

问题描述:

我发现有1000个其他主题需要这方面的帮助,但他们的解决方案似乎都没有出于某种原因。在.htaccess中强制使用WWW和HTTPS(SSL)

几天前我刚刚为我的域名购买了SSL,因为我接受我网站上的信用卡/支票卡,并希望我的客户感到安全。

不管怎么说,这是我的.htaccess文件看起来像此刻:

php_flag display_startup_errors off 
php_flag display_errors off 

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteRule ^buy-wow-accounts index.php [NC] 
RewriteRule ^sell-wow-accounts sell.php [NC] 
RewriteRule ^about-khaccounts about.php [NC] 
RewriteRule ^buy-sell-wow-accounts-faq faq.php [NC] 
RewriteRule ^khaccounts-feedback feedback.php [NC] 
RewriteRule ^payment-plan payment-plan.php [NC] 
RewriteRule ^customer-login customer-login.php [NC] 
RewriteRule ^customer-center customer-center.php [NC] 
RewriteRule ^privacy-policy privacy.php [NC] 
RewriteRule ^buy-world-of-warcraft-wow-accounts/page-([0-9]+) listing.php?pageid=$1 [L,NC] 
RewriteRule ^buy-world-of-warcraft-wow-accounts listing.php [L,NC] 
RewriteRule ^world-of-warcraft-wow-acc/([^/]*)\.html$ account.php?acc=$1 [NC] 

我想要做的就是力量WWW如果它不是已经在URL并确保HTTPS(SSL)的也是*的。我有很多链接到我的网站,其中大部分链接只是像“www.khaccounts.net”,“http://khaccounts.net”和“khaccounts.net”这样的链接。

我想确保这些不同的旧链接中的每一个都被强制为拥有WWW和HTTPS。换句话说,我希望人们拥有网址 - 'https://www.khaccounts.net',无论他们通过什么URL访问我的网站。

谢谢!

右后您的www规则添加:

RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

而且,您的www规则更改为https://,以便有没有2个重定向。

看起来像你正在重写所有的网址到根目录。你为什么不尝试:

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L] 
+0

这不起作用。当我输入'khaccounts.net'时,它会在URL中显示'https://khaccounts.net//',并表示该页面有重定向循环。 – user554095 2012-08-15 21:27:40

尝试更换这些线路:

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

有了这个:

RewriteCond %{HTTPS} !on [OR] 
RewriteCond %{HTTP_HOST} !^www\.khaccounts\.net$ [NC] 
RewriteRule ^(.*)$ https://www.khaccounts.net/$1 [R=301,L,QSA] 
+0

这似乎正在做我所需要的,但问题是它放入URL的所有内容都是https:// www。 - 它缺少请求的URL。 – user554095 2012-08-15 21:25:18

+0

这很奇怪,$ 1是有捕获请求的网址,并将其传递给新的网址...嗯... – Oussama 2012-08-15 21:52:23

+0

是的,所有显示的是 - https:\\ www。 - 而已。我把https:// www \ .khaccounts \ .net $ 1作为重写规则,它给了我正确的URL,但是让我进入重定向循环。 – user554095 2012-08-15 22:03:53

此作品中流露出khaccounts.net被击中时,正确的URL,但仍然会引发重定向循环。

RewriteCond %{HTTPS} !on [OR] 
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://www.khaccounts.net/$1 [R=301,L,QSA]