如何仅使用.htaccess在1and1

时间:2018-05-30 18:02:48

标签: wordpress apache .htaccess mod-rewrite https

在激活我从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;。

3 个答案:

答案 0 :(得分:0)

根据Apache documentationmyinputfile="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完成。我不喜欢的是,由于某种令人讨厌的原因,它使用了双斜杠,而删除它们的标准方法不起作用。