我需要强制使用 https 和 www .htaccess
,我正在寻找一种不特定于域的解决方案,但将适用于任何域和任何文件夹(使用服务器变量(。
设置:
-
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可能会在通过管理员更改永久链接时复制它,并且它不会按原样找到此块。这是正确的,还是有更好的方法来合并这两个块?
谢谢!
在/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 如果你想把它放在你的根目录中。