如何为 HTTPS 配置 503 状态?

How to configure 503 status for HTTPS?

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

问题是如果有人从推荐人点击 link 到某些页面,比方说从 Facebook,它会将他们重定向到 maintenance.php 页面,但由于某种原因它无法加载CSS 个与之关联的文件和图像。 CSS 文件和图像突然 return 503 状态。

默认情况下,我的站点还将重定向 "http" 个页面以使用 "https" 和 "www"。如果我 运行 同一页面仅 "http",则会加载 CSS 文件和图像。

然后,如果我 运行 "https" 中的页面而 URL 中没有 "www",该页面将加载 CSS 文件和图像.

所以看起来只要 "https" 和 "www" 都在 URL 中,页面、它的 CSS 文件和它的图像都会return503.

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

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"

服务器是 运行ning Apache。有没有我可以使用的配置,可以确保当有人单击 link 时加载 CSS 文件和图像,其中包含 URL 中的 "https" 和 "www" ?

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

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

原来是:

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

更改为:

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