我正在努力确保我的网站始终在https://www.angelleye.com
上运行。所以,https://
和www.
我都阅读了一些基本指南,他们几乎都表明了这一点,这就是我目前正在使用的内容。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
当我查看我的主页时,它似乎按预期将我重定向到https://
,但是,如果我直接加载其他URL,则不会。例如,如果我在浏览器中输入此内容:http://angelleye.com/product-category/paypal-tools/
然后它会为我添加www.
,但它会将我留在http://
而不是将我移至https://
。
我的htaccess规则是否有问题?任何有关如何使其按预期工作的信息将不胜感激。谢谢!
编辑:我正在使用WordPress和WP Rocket缓存插件,我只是注意到它在我的规则之上添加了一堆规则。也许有冲突.. ??这是一个链接,可以看到整个事情:http://pastebin.com/fJTmbk05
编辑2 :这似乎与我的WordPress配置有关,但我无法弄清楚它会是什么。如果我在WP安装之外尝试URL,它可以正常工作。 (即http://angelleye.com/temp/ball.gif)
编辑3 :嗯,现在这个URL在我的WP结构中,但它工作正常(angelleye.com/category/blog/)。所以似乎有些网址确实有用,但很多网址都没有。??
编辑4 :我已完全删除了我的缓存插件,因此我的htaccess文件现在只有我的重定向规则。在WP结构之外仍然可以正常工作,但不在其中。
答案 0 :(得分:1)
您的.htaccess
文件包含三个重写部分。第一个是插件相关的,第二个是与WordPress相关的,第三个是你的添加。
由于你的规则在第三个区块中,因为WordPress规则已经生效,所以它们不会被看到。
因此,您需要将添加的规则移至第133行(在第一个mod_rewrite
定义之上)。
现在是'命令链'或优先级:
www.
答案 1 :(得分:0)
尝试以下代码,使用参数强制将http
重定向到https
。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,QSA,NC,L]
答案 2 :(得分:-1)
您是否在AllowOverride
设置了httpd.conf
?
RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/$1 [R,L]
# This rule will redirect all users who are using any part of /secure/ to the same location but using HTTPS.
你会用angelleye取代安全。