在激活我从1and1主机收到的免费SSL证书后,我不知疲倦地试图强制HTTPS到我的整个WordPress网站,以便所有过去的HTTP链接重定向到HTTPS。我想通过仅修改我的web文件夹根目录中的.htaccess文件来强制HTTPS。我尝试过在网上找到的多个例子,包括:
http://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>
https://www.1and1.com/digitalguide/hosting/technical-matters/the-ten-best-htaccess-tricks/
<IfModule mod_rewrite.c>
# activate HTTPS
RewriteEngine On
RewirteCond %{Server_Port} !=443
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301, L]
</IfModule>
在尝试修改.htaccess文件的所有这些方法后,它们都没有工作。我终于遇到了这个Stack Overflow question并将PHP代码块放在我当前主题文件夹中的functions.php文件中。这是代码:
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
if(!headers_sent()) {
header("Status: 301 Moved Permanently");
header(sprintf(
'Location: https://%s%s',
$_SERVER['HTTP_HOST'],
$_SERVER['REQUEST_URI']
));
exit();
}
}
这个PHP代码实现了强制所有HTTPS链接的目标。但是,我希望保持我的代码干净,并将其全部放在.htaccess文件中以便更好地组织,因此我不必记得每次更改主题时都将PHP代码添加到functions.php文件中。我的WordPress网站。
有没有人可以解释如何通过仅修改.htaccess文件或解释我可能出错的地方来强制执行HTTPS?
我的.htaccess文件中唯一活动的代码块是:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
AddHandler x-mapp-php5.5 .php
我已经改变了我的WordPress设置&#34; WordPress地址(URL)&#34;和&#34;网站地址(URL)&#34;到&#34; https://example.com/&#34;。
答案 0 :(得分:0)
根据Apache documentation,myinputfile="MyProgrammingBook.txt";
mycmd() { cat <(head -3 ${myinputfile}|awk -F "\t" '{OFS="\t"}{print "Helloworld",$0}') > outputfile.txt; };
export -f mycmd;
bsub -q short "bash -c mycmd"
指令可以更好地处理必须重定向到http
的{{1}}请求等情况。该指令将进入服务器配置文件。
如果您只能访问.htaccess,那么您应该能够使用以下内容:
https
答案 1 :(得分:0)
在.htaccess文件
上试试RewriteEngine on
RewriteCond %{SERVER_NAME} =abc.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
答案 2 :(得分:0)
你很近。应该是:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
我只需要和他们(现在是Ionos)一起在基于Windows的托管程序包上执行此操作。我不确定为什么他们要求重写使用.htaccess而不是web.config完成。我不喜欢的是,由于某种令人讨厌的原因,它使用了双斜杠,而删除它们的标准方法不起作用。