在WordPress和非WordPress子目录中强制https + www

时间:2017-02-08 10:27:59

标签: wordpress apache .htaccess mod-rewrite

我需要使用.htaccess强制使用https和www,并且我正在寻找一个非特定于域的解决方案,但它将适用于任何域和任何文件夹(使用服务器变量)。< / p>

设置:

  • domain.com已安装WordPress
  • domain.com/folder2是一个物理文件夹,包含一个单独的网站

domain.com中的.htaccess文件目前包含:

# force www+https
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !on$ [NC]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

# 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

这似乎适用于domain.com,但不适用于domain.com/folder2:虽然https在那里强制执行,但www重定向不起作用。

我尝试在domain.com/folder2中放置第二个.htaccess文件;那也没有做任何事情。

问题:

  • 如何将这些规则也适用于domain.com/folder2
  • 我已将WordPress块分开,因为WordPress可能会将其复制,例如永久链接通过管理员更改,并且它不会按原样找到此块。这是正确的,还是有更好的方法来巩固这两个块?

谢谢!

1 个答案:

答案 0 :(得分:1)

在/ folder2的.htaccess中,添加以下内容:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]

如果要将其放在根目录中,请删除/folder2/.htaccess。