.htaccess перенаправить подпапку в HTTPS - PullRequest
14 голосов
/ 21 января 2011

Я пытаюсь написать 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?

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

Ответы [ 6 ]

18 голосов
/ 21 января 2011

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

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/$1 [R=301,L]
11 голосов
/ 06 апреля 2017

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

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2 голосов
/ 05 июня 2012

Ааа, это комбинация из двух. MonoMano - вы пропустили подкаталог в первой части RewriteRule, поэтому направили ВСЕ трафик на адрес субдомена HTTPS. Я обнаружил, что проверка на «выключен» была более надежной, чем проверка на! = Вкл, не спрашивайте меня, почему!

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L]
1 голос
/ 22 декабря 2015

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

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/subdirectory/$1 [L,R=301]
0 голосов
/ 08 сентября 2013

Используйте это, если вы не хотите, чтобы в адресной строке отображалась подпапка.Он будет перенаправлять 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]
0 голосов
/ 21 января 2011

Попробуйте

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