【问题标题】:.htaccess redirect subfolder to HTTPS.htaccess 将子文件夹重定向到 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 有什么想法吗?

非常感谢!

【问题讨论】:

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


    【解决方案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]
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-12-05
                • 2019-06-21
                • 2020-07-23
                • 2019-08-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多