.htaccess将子文件夹重定向到HTTPS

时间:2011-01-21 19:17:46

标签: .htaccess mod-rewrite https url-rewriting

我正在尝试为我的.htaccess文件编写RewriteRule。具体来说,每当用户访问特定的子目录时,我希望它重写以强制进行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的任何想法?

非常感谢!

7 个答案:

答案 0 :(得分:18)

我会把它放到域的根目录中:

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

答案 1 :(得分:11)

这项工作对我来说,这允许您重定向到https特定文件夹,只需在文件夹中添加一个htaccess文件,其中包含以下内容:

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

答案 2 :(得分:2)

啊,它是两者的组合。 MonoMano - 您在RewriteRule的第一部分中省略了子目录,因此将所有流量定向到HTTPS子域地址。我发现检查'off'比检查更可靠!= on,不要问我原因!

你想根据Floern的回复添加子目录,见下文:

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

答案 3 :(得分:1)

将下面给出的行添加到该子目录的.htaccess文件中:

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

答案 4 :(得分:0)

如果您不希望地址栏显示子文件夹,请使用此选项。它会将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]

答案 5 :(得分:0)

尝试一下

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

答案 6 :(得分:-1)

尝试

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