Проблемы перенаправления .htaccess с подпапками для HTTPS - PullRequest
1 голос
/ 14 февраля 2020

У меня проблема с веб-сайтом HTTPS .htaccess редирект.

Сайт изначально имеет два подразделения: основной сайт (http://example.com/) и сайт блога ( http://example.com/blog/). Я создал .htaccess для принудительного применения HTTPS после того, как веб-сайт работает более 20 лет под портом 80 (HTTP). Таким образом, есть много ссылок на несколько сайтов, ссылающихся на этот сайт.

Первая проблема, с которой я столкнулся, была, когда я нажимал на ссылку http://example.com/blog/test, она перенаправлялась на https://example.com/test (обратите внимание, HTTPS, но без добавления "блога") , Это приводит к 404 страницам ошибок. Поэтому я написал следующий код:

# Forced HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://example.com%{REQUEST_URI} [NE,L,R]
# rewrite root requests to subfolder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /blog%{REQUEST_URI} [L]

Теперь приведенный выше код разрешил проблему с ошибкой 404 на http://example.com/blog/ [page_here] , но когда он перенаправляется, он теряет " блог "часть. Обычно посетитель, который нажимает на ссылку http://example.com/blog/test, увидит https://example.com/test в адресной строке. Я заметил, что он нашел правильную страницу и 404 ошибок, но удалил «блог» с адреса. (Я могу получить доступ к страницам блога php без «блога» в URL-адресе, чтобы он выглядел как два веб-адреса для одной и той же страницы.)

Другая проблема заключается в том, что 404 страницы основного сайта теперь направлены на Страница 404 сайта блога, и теперь посетители могут получить доступ к той же самой странице блога с или без «блога» в URL.

Есть ли способ решить эту проблему? Основной сайт находится на php, а сайт блога на WordPress. Файл .htaccess, который я редактировал, находится на главном сайте root www folder.

1 Ответ

0 голосов
/ 14 февраля 2020

Пробовали с изменениями постоянной ссылки?

wp-admin / Settings-> Постоянные ссылки и задали имя записи

Рабочий пример кода, измените необходимые вещи, но сначала попробуйте с плагином https://wordpress.org/plugins/really-simple-ssl/

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L,NE]

# 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.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...