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

Apache 将任何域重定向到HTTPS和特定路径,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正在寻找一段代码,重定向任何域(通配符ish),而不仅仅是一个特定的域,以便重定向重定向到HTTPS和一个特定的路径 我试过很多代码,但我能找到的90%的搜索结果都是用于重定向特定域的 为什么我需要这个?我们使用envoyer将Statamic部署到我们的cpanel服务器。我们对我们拥有的每一位客户都使用此功能。例如,我们Statamic实例的url是cms.example.com。我需要这个重定向到,但它也可以是cms.totallydifferent.co.uk/cp,我一生都找不到合适

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

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

为什么我需要这个?我们使用envoyer将Statamic部署到我们的cpanel服务器。我们对我们拥有的每一位客户都使用此功能。例如,我们Statamic实例的url是cms.example.com。我需要这个重定向到,但它也可以是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>

重新启动发动机
重写cond%{HTTPS}=在…上
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}cp[R=301,L]
根据请求,完整的.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>
SetEnv COMPOSER\u HOME'/opt/cpanel/COMPOSER/bin'
选项-多视图-索引
重新启动发动机
重写cond%{HTTPS}!在[或]
重写cond%{REQUEST_URI}^/cp[NC]
重写规则^https://%{HTTP_HOST}/cp[R=301,L]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#向前端控制器发送请求。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
# ------------------------------------------------------------------------------
#缓存控制头
# ------------------------------------------------------------------------------
标题集缓存控制“最大年龄=31536000”
有谁能给我指出正确的方向吗


亲切问候

您可以尝试此规则,并将两个条件与
子句连接起来:

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]

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

您可以在加入
子句的两个条件下尝试此规则:

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]

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

Hi,这不起作用,我删除了%{REQUEST\u URI}位,因为它是在/cp之后重定向到index.php的。但是后来我得到了被重定向到很多次的错误。我编辑了我的帖子以包含完整的.htaccess。请在清除浏览器缓存后尝试将我更新的规则作为最顶层的规则。行为良好。它似乎正确地重定向,但由于某些原因,它正在破坏或无法访问页面的css。要修复css/js问题,请在页面HTML的
标记下方添加此项:
嗨,这不起作用,我删除了%{REQUEST\u URI}位,因为它是在/cp之后重定向到index.php的。但是后来我得到了被重定向到很多次的错误。我编辑了我的帖子以包含完整的.htaccess。请在清除浏览器缓存后尝试将我更新的规则作为最顶层的规则。行为良好。它似乎正确地重定向,但由于某些原因,它正在破坏或无法访问页面的css。要修复css/js问题,请在页面HTML的
标记下方添加此项: