.htaccess перенаправить подпапку на HTTPS

Я пытаюсь написать RewriteRule для моего .htaccess файла. В частности, всякий раз, когда пользователь обращается к определенному подкаталогу, я бы хотел, чтобы он перепутал, чтобы принудительно установить соединение HTTPS.

Например, всякий раз, когда кто-то обращается: http://www.mydomain.com/subdirectory (и любые другие подкаталоги этого "подкаталога" ).

Я бы хотел, чтобы он переписал https://www.mydomain.com/subdirectory

Я пробовал следующее, но создается цикл:

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

Кроме того, этот файл .htaccess помещается в корень моего домена.

Любые идеи о том, как изменить мой RewriteRule?

Большое спасибо!

Ответ 1

Я бы поместил это в корневой каталог домена:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/$1 [R=301,L]

Ответ 2

Эта работа для меня позволяет перенаправить https на определенную папку, просто добавьте файл htaccess внутри папки со следующим содержимым:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ответ 3

Ahh, его комбо из двух. MonoMano - вы опустили подкаталог в первой части RewriteRule, поэтому направляете весь трафик на адрес поддомена HTTPS. Я обнаружил, что проверка "off" была более надежной, чем проверка на!= On, не спрашивайте меня, почему!

Вы хотите добавить подкаталог обратно в соответствии с ответом Floern, см. ниже:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L]

Ответ 4

Добавьте строки, указанные ниже, в файл .htaccess этого подкаталога:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/subdirectory/$1 [L,R=301]

Ответ 5

Используйте это, если вы не хотите, чтобы адресная строка отображала подпапку. Он перенаправит yourdomain.com на yourdomain.com/subfolder, но будет выглядеть так, как будто вы все еще на yourdomain.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourprimarydomain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$ 
RewriteRule ^(/)?$ subfolder/index.php [L]

Ответ 6

Try

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L]