如何解决将任何域重定向到 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 举报,一经查实,本站将立刻删除。