您如何订购用于在子目录中安装Wordrpess并强制使用HTTPS的重写规则?

时间:2019-06-25 16:10:37

标签: .htaccess mod-rewrite url-rewriting

我正在将Wordpress安装在其自己的目录中,并且还想强制使用HTTPS。首先是哪个:重写规则强制使用HTTPS,还是重写规则直接定向到子目录?

我已经完成了HTTPS强制操作,效果很好。

这是我强制使用HTTPS的方式(当然,“ example.net”不是网站的名称!):

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?example\.net
RewriteRule ^(.*)$ https://example.net/$1 [R,L]

来自https://wordpress.org/support/article/giving-wordpress-its-own-directory/的子目录使用代码如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ my_subdir/index.php [L] 
</IfModule>

我在这里的顺序正确吗,还是先重定向到子目录然后再​​强制HTTPS?

1 个答案:

答案 0 :(得分:0)

  

首先出现的是:强制使用HTTPS的重写规则,还是将重定向规则定向到子目录?

强制执行HTTPS的指令需要首先执行。如果将它们放在WordPress前控制器之后,那么您的WordPress URL将不会被重定向(至少由.htaccess重定向)-仅重定向您的静态资源(图像,CSS,JS等)。 )将被重定向,而WordPress前端控制器不会处理。

RewriteCond %{HTTP_HOST} ^(www.)?example.com$

您需要检查许多主机名。除非您有多个域(或主域的子域),它们都指向文件系统上的同一区域并具有不同的用途,否则这是不必要的。

当前,您的HTTP到HTTPS重定向是302(临时)重定向。使用302进行测试以避免缓存问题,但是最终,HTTP到HTTPS重定向应该是301(永久)重定向。即。将RewriteRule标志R更改为R=301