微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将任何域重定向到 HTTPS 和特定路径

如何解决将任何域重定向到 HTTPS 和特定路径

我正在寻找一段代码重定向任何域(通配符 ish),而不仅仅是特定域,以便重定向重定向到 HTTPS 和特定路径。

我尝试了很多代码,但我能找到的几乎 90% 的搜索结果都是用于重定向特定域的。

我为什么需要这个?我们使用 envoyer 将 Statamic 部署到我们的 cpanel 服务器。我们将其用于我们拥有的每一位客户。例如,我们 Statamic 实例的 url 是 cms.example.com。我需要将其重定向https://cms.example.com/cp,但它也可以是 cms.totallydifferent.co.uk/cp,我一生都找不到合适的示例。

我让这段代码(如下)运行了一段时间,但它不可靠。它有时有效,但大部分时间无效。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}cp [R=301,L]
</IfModule>

根据要求提供完整的 .htaccess 文件

SetEnv COMPOSER_HOME '/opt/cpanel/composer/bin'
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTPS} !on [OR]
    RewriteCond %{REQUEST_URI} !^/cp [NC]
    RewriteRule ^ https://%{HTTP_HOST}/cp [R=301,L]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
</IfModule>

# ------------------------------------------------------------------------------
# Cache-Control Headers
# ------------------------------------------------------------------------------

<filesMatch "\.(gif|jpg|png|svg|woff)$">
    Header set Cache-Control "max-age=31536000"
</filesMatch>

谁能指出我正确的方向?

亲切的问候

解决方法

你可以用 2 个条件加入 OR 子句试试这个规则:

RewriteEngine On

# fix css/js
RewriteRule ^cp/(.+\.(?:css|js|png|jpe?g|gif))$ https://%{HTTP_HOST}/$1 [L,NC,R=301]

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{THE_REQUEST} !\s/+cp [NC]
RewriteCond %{HTTP_HOST} ^cms\. [NC]
RewriteRule !\.(?:css|js|png|jpe?g|gif)$ https://%{HTTP_HOST}/cp [R=301,L,NC]

在测试此更改之前,请确保这是您的最高规则并清除浏览器缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。