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

Posted

技术标签:

【中文标题】.htaccess 将子文件夹重定向到 HTTPS【英文标题】:.htaccess redirect subfolder to HTTPS 【发布时间】:2011-06-13 08:49:49 【问题描述】:

我正在尝试为我的 .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 有什么想法吗?

非常感谢!

【问题讨论】:

【参考方案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】:

啊,它是两者的组合。 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】:

试试这个

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

【讨论】:

还有其他答案提供了 OP 的问题,它们是前段时间发布的。发布答案 see: How do I write a good answer? 时,请确保添加新的解决方案或更好的解释,尤其是在回答较老的问题时。 仅代码的答案被认为是低质量的:请务必解释您的代码的作用以及它如何解决问题。【参考方案7】:

这将删除 www 前缀,并强制 https:

RewriteEngine on
RewriteCond %HTTP_HOST !^www\. [OR,NC]
RewriteCond %HTTPS off 
RewriteRule ^ https://example.com%REQUEST_URI [NE,R=301,L]
RewriteRule ^((?!subdirectory/).*)$ /subdirectory/$1 [L]

为您的主域更改example.com,为子目录更改subdirectory

【讨论】:

【参考方案8】:

试试

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

【讨论】:

以上是关于.htaccess 将子文件夹重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

强制通过htaccess文件重定向到https

.htaccess文件未将HTTP重定向到HTTPS

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)

使用特定域的 .htaccess 重定向到 HTTPS

在 Yii2 .htaccess 中将 http 重定向到 https

markdown [www和https重定向]将所有文件重定向到https url和www域名#www #htaccess