ВЕЧНИ СТРАНИЦИ - \ "Живот по Божието Слово \" - Гост: Министър Роджър Майк

Водя блог на Wordpress, който има проблем с HTTPS пренасочването. Освен началната страница, никой друг URL адрес не се пренасочва към HTTPS, ако посетите чрез HTTP.

Искам да пренасоча целия HTTP трафик към HTTPS. Понастоящем само началната страница (http://www.example.com) се пренасочва към HTTPS, ако опитате с HTTP.

но ако посетите http://www.example.com/page1, тогава той няма да бъде пренасочен към HTTPS и ще остане на HTTP.

Не искам да използвам никакъв плъгин като "наистина прост SSL". След малко търсене в мрежата открих, че мога да модифицирам .htaccess файл, за да направите това. След това се опитах да разбера .htaccess файла (като се има предвид, че никога преди не съм работил с PHP или WordPress или дори Apache). Опознах това RewriteEngine On трябва да се появи само веднъж във вашия файл, но в моя случай се появява два пъти. може би някой плъгин или тема са модифицирали това, за което не знам. по-долу е съдържанието на моя .htaccess файл.

# 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.  ExpiresActive On ExpiresByType image/jpg 'access plus 24 hours' ExpiresByType image/jpeg 'access plus 24 hours' ExpiresByType image/gif 'access plus 24 hours' ExpiresByType image/png 'access plus 24 hours' ExpiresByType text/css 'access plus 24 hours' ExpiresByType application/pdf 'access plus 1 week' ExpiresByType text/javascript 'access plus 24 hours' ExpiresByType text/html 'access plus 5 minutes' ExpiresByType image/x-icon 'access plus 1 year' ExpiresDefault 'access plus 24 hours'   Header set X-Endurance-Cache-Level '2'   RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Нямам поддомейни. само един домейн. Така че, за да изчистя съмненията си, имам два въпроса.

1) Правилен ли е този .htaccess файл? Искам да кажа, можем ли да имаме две RewriteEngine On линии? това също извън, отново не съм много запознат с този синтаксис.

2) Какво трябва да променя, за да отразя HTTPS пренасочването на всичките ми страници?

Освен това наруши пренасочването извън WWW към WWW.

PS: това са едни от връзките, които съм посетил -

https://wordpress.org/support/article/htaccess/

.htaccess синтаксис множество RewriteEngine на

https://www.hostinger.com/tutorials/ssl/forcing-https

Вашето правило за пренаписване на HTTPS никога не се изпълнява, защото е след RewriteRule . /index.php [L]. Това правило съответства на всички URL пътища и е последното правило, изпълнено за тях поради L флаг.

За да накарате това правило за пренасочване да работи, просто го преместете в горната част на .htaccess файл.

Самият WordPress прави някои пренасочвания. Това, което вероятно се случва тук, е, че пренасочването, което виждате, се извършва от PHP кода на WordPress, а не от .htaccess.

  • Искаш да кажеш, просто трябва да преместя последните 3 реда в горната част на файла (т.е. преди )? това може ли да причини някакъв проблем?
  • Бих ги поставил преди # BEGIN WordPress. WordPress може да презапише всичко в своя раздел. Това няма да създаде проблеми при преместването на тези правила нагоре, ще ги накара да започнат да работят.
  • Благодаря, не мога да подкрепя отговора, тъй като имам по-малко от 15 репутации. просто го маркирах като отговор.
  • „пренасочването, което виждате, се извършва от PHP кода на WordPress“ - Предходният контролер на WP не улавя заявки за началната страница (не отговаря на модела . и също е a директория, така че условието също ще се провали), така че е много вероятно пренасочването в .htaccess - в края на файла - задейства за тази заявка (както би направил и за всеки статичен ресурс). „Това правило съвпада с всички URL пътеки“ - всички URL пътеки с дължина поне 1 знак (с изключение на префикса на наклонена черта).

Вдъхновявайки се от отговора на @ Stephen, го реших, като преместих последните 3 реда точно преди mod_rewrite блок.

# 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.  ExpiresActive On ExpiresByType image/jpg 'access plus 24 hours' ExpiresByType image/jpeg 'access plus 24 hours' ExpiresByType image/gif 'access plus 24 hours' ExpiresByType image/png 'access plus 24 hours' ExpiresByType text/css 'access plus 24 hours' ExpiresByType application/pdf 'access plus 1 week' ExpiresByType text/javascript 'access plus 24 hours' ExpiresByType text/html 'access plus 5 minutes' ExpiresByType image/x-icon 'access plus 1 year' ExpiresDefault 'access plus 24 hours'   Header set X-Endurance-Cache-Level '2'  RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 
  • WordPress може да замени всичко между BEGIN WordPress и END WordPress, така че бих го преместил по-нагоре. Ако трябваше да го поставите там, щях да сложа вътре в горната част на IfModule mod_rewrite.c блокирайте и премахнете излишното RewriteEngine On.
  • Можете ли да актуализирате отговора си с актуализирания скрипт? може да е объркващо за начинаещи

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?