我已经在WordPress的https://www.example.com/
和子目录https://www.example.com/blogs/
上安装了两个实例
现在,为了将所有HTTP重定向到HTTPS版本,我在根文件夹的.htaccess
中添加了以下指令,如下所示:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
这适用于根文件夹下的所有URL,但/blogs/
子文件夹下的URL除外。
我试图通过再次添加上述指令来修改/blogs/
下的D6
。但这行不通。为什么?
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/blogs/$1 [L,R=301,NC]
事实上,我曾经尝试过这样做,但也没有发挥作用。
更新:
现在让我举一个例子来更清楚地解释这一点:
对于http://www.example.com/outlook-repair/
这样的URL,它可以被正确地重定向到https版本https://www.example.com/outlook-repair/
。
但是,对于/blogs/
子文件夹下的URL,例如http://www.example.com/blogs/2-useful-methods-to-recover-outlook-data-from-a-damaged-disk-image-file
,它不能被重定向到https版本,相反,您得到的仍然是D17
版本。这就是问题所在。
<#>更新
下面是/blogs/.htaccess
,为了简单起见,我禁用了WP最快的缓存插件:
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
RewriteEngine On
RewriteBase /blogs/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blogs/index.php [L]
# END WordPress
# Wordfence WAF
Require all denied
Order deny,allow
Deny from all
# END Wordfence WAF
<#>Update 2
我尝试为主站点和博客站点设置重定向插件的站点选项,正如https://redirection.me/support/site-options/中所描述的那样,not仍然不起作用。
发布于 2020-09-26 18:55:07
我认为
.htaccess
中的指令是由子文件夹继承的。
根mod_rewrite文件中的.htaccess
指令不是由/blog/.htaccess
文件继承的(默认情况下)。您需要专门启用mod_rewrite继承,但是这可能会增加不必要的复杂性。
我试图在/blog/下修改.htaccess,再次添加上面的指令。但这行不通。为什么?
即使启用了mod_rewrite继承,这也不能正常工作,因为它会将请求重定向回文档根。您需要像前面提到的那样修改该指令(通过在替换中添加/blogs
子目录),但是,这会破坏文档根目录中WordPress站点的重定向。
相反,您需要在/blog/.htaccess
文件的顶部重复HTTPS重定向。由于这是在子目录中,子目录似乎是URL路径的一部分,所以最好使用REQUEST_URI
服务器变量来避免硬编码指令中的子目录(尽管子目录无论如何都是在以后的指令中硬编码--这是可以避免的--但我假设是由WordPress创建的)。
(旁白:如果您确实启用了mod_rewrite继承,则需要更改根.htaccess
文件以同时使用REQUEST_URI
。然而,这不太可能是你唯一需要改变的东西。)
例如:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
REQUEST_URI
服务器变量包含完整的根相对(从斜杠开始)URL-路径。
NC
标志在这里是多余的。
https://wordpress.stackexchange.com/questions/375300
复制相似问题