如何为 HTTPS 配置 503 状态?

Posted

技术标签:

【中文标题】如何为 HTTPS 配置 503 状态?【英文标题】:How to configure 503 status for HTTPS? 【发布时间】:2017-10-04 09:02:04 【问题描述】:

我为我的站点设置了一个维护页面,因此当用户访问时,他们会返回 503 状态并重定向到自定义维护.php 页面。所以它工作正常,只要我在搜索地址栏中手动输入 URL,我就可以在浏览器中清楚地看到它正确返回 503。

问题是,如果有人从推荐人(比如 Facebook)点击指向某些页面的链接,它会将他们重定向到 maintenance.php 页面,但由于某种原因,它无法加载与其关联的 CSS 文件和图像。 CSS 文件和图像也会突然返回 503 状态。

默认情况下,我的网站还将重定向“http”页面以使用“https”和“www”。如果我只在“http”中运行相同的页面,CSS 文件和图像就会加载。

然后,如果我在 URL 中没有“www”的“https”中运行页面,该页面将加载 CSS 文件和图像。

所以看起来只要“https”和“www”都在 URL 中,页面、它的 CSS 文件和它的图像都会返回 503。

我的 .htaccess 文件中配置了我的 503 状态:

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REMOTE_ADDR !^123\.45\.67\.89$
RewriteCond %DOCUMENT_ROOT/maintenance.php -f
RewriteCond %DOCUMENT_ROOT/maintenance.enable -f
RewriteCond %SCRIPT_FILENAME !maintenance.php
RewriteRule ^.*$ /maintenance.php [R=503,L]
ErrorDocument 503 /maintenance.php
Header Set Cache-Control "max-age=0, no-store"

服务器正在运行 Apache。是否有我可以使用的配置来确保在有人单击 URL 中包含“https”和“www”的链接时加载 CSS 文件和图像?

编辑:似乎存在此问题的页面也没有将其 URL 重定向到 maintenance.php。尽管尽管如此,它们仍然显示maintenance.php 内容。

【问题讨论】:

【参考方案1】:

结果证明解决方案很简单。在我的maintenance.php中,我只需要通过在前面添加“/”来将CSS文件和图像的相对路径更改为绝对路径。

原来是:

<link href="css/maintenance.css" rel="stylesheet" type="text/css">

改为:

<link href="/css/maintenance.css" rel="stylesheet" type="text/css">

【讨论】:

以上是关于如何为 HTTPS 配置 503 状态?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 R 中下载文件 - 状态 503

在啥情况下 REST API 应该返回 HTTP 状态 503

在 Axios OPTIONS 响应中处理状态(例如 503)

如何为 Elastic Beanstalk 配置 Laravel?

如何为 ejabberd 配置搜索服务 url?

如何为状态栏设置渐变颜色