【问题标题】:Redirect any domain to HTTPS and a specific path将任何域重定向到 HTTPS 和特定路径
【发布时间】:2021-03-10 08:29:25
【问题描述】:

我正在寻找一段代码,它可以重定向任何域(通配符),而不仅仅是特定域,以便重定向重定向到 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>

谁能指出我正确的方向?

亲切的问候

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    你可以试试这个规则,加上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]
    

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

    【讨论】:

    • 嗨,这不起作用,我删除了 %{REQUEST_URI} 位,因为它在 /cp 之后重定向到 index.php。但是后来我得到了被重定向到很多次的错误。
    • 我编辑了我的帖子以包含完整的 .htaccess
    • 请在清除浏览器缓存后尝试我更新的规则作为最顶层规则。
    • 行为良好。它似乎正确重定向,但由于某种原因它破坏或无法访问页面的 css。
    • 要修复 css/js 问题,请将其添加到页面 HTML 的 &lt;head&gt; 标记下方:&lt;base href="/" /&gt;
    猜你喜欢
    • 2022-01-11
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2019-02-21
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多