我正在将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?
答案 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
。