Как вы заказываете правила перезаписи для установки Wordrpess в подкаталог, а также для принудительной установки HTTPS? - PullRequest
1 голос
/ 25 июня 2019

Я устанавливаю 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 голосов
/ 25 июня 2019

Что на первом месте: правила перезаписи для принудительного использования HTTPS или правила перезаписи для направления в подкаталог?

Директивы для принудительного использования HTTPS должны идти первыми. Если вы поместите их после фронт-контроллера WordPress, то ваши URL-адреса WordPress не будут перенаправлены (по крайней мере .htaccess) - будут только ваши статические ресурсы (изображения, CSS, JS и т. Д.) перенаправлены, которые не обрабатываются фронт-контроллером WordPress.

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

У вас есть много проверок для имени хоста. Если у вас нет нескольких доменов (или поддоменов основного домена), которые все указывают на одну и ту же область в файловой системе и служат разным целям, то в этом нет необходимости.

В настоящее время ваше перенаправление с HTTP на HTTPS является перенаправлением 302 (временным). Протестируйте с 302, чтобы избежать проблем с кэшированием, но в конечном итоге перенаправление с HTTP на HTTPS должно быть перенаправлением 301 (постоянным). то есть. измените флаг RewriteRule R на R=301.

...