我想临时将所有来自example.com的流量重定向到维护页面并返回503代码。我创建了maintenance.html页面:Apache2重定向到维护页面 - 丢失图像
<!DOCTYPE html>
<html>
<head>
<title>We'll be back!</title>
<link href="css/main.css" rel="stylesheet" media="screen">
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body style="background-color: #red">
<div>
<div id="header-row" class="row">
<img src="/images/header-logo.png" alt="loogo" class="img-responsive center-block">
</div>
</div>
<script src="http://code.jquery.com/jquery.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/main.js"></script>
</body>
</html>
我将html页面,css,js和images文件夹放到文档根文件夹中。然后,我附有以下行APACHE2.2配置文件:
RewriteEngine On
#prevent from recursiv redirection
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteCond %{REQUEST_URI} !(js|css|images)$
RewriteCond %{REQUEST_FILENAME} !.*\.p
RewriteCond %{REQUEST_FILENAME} !-f
#503 and redirect
RewriteRule ^.*$ /maintenance.html [R=503,L]
ErrorDocument 503 /maintenance.h
#do not cache
Header Set Cache-Control "max-age=0, no-store"
所有通话将被重定向到maintenance.html页面,但不显示任何图像。我试图通过加入来修复它:
RewriteCond %{REQUEST_FILENAME} !-d
但是然后重定向停止工作。奇怪的是,添加RewriteCond%{REQUEST_URI}!(js | css | images)$修复了丢失样式的问题,但图像仍然被重定向。我做错了什么?
编辑1:
我检查浏览器的标题 - logo.png如何搜索。地址是http://example.com/images/header-logo.png所以我加了测试以下规则:
RewriteCond %{REQUEST_URI} !^/images/header-logo\.png$
但这也没有帮助....
我试过了,结果很令人惊讶,重定向没有起作用,主页面缺少样式和图像(只有纯文本)。 – orim
你应该有完整的路径到你的js/css,比如''或者你可以在页面的HTML部分下面加上这个:' ' –
anubhava
我试过更新后的版本,但它将页面向下放错误:服务暂时不可用。也许它是由“!”引起的在RewriteRule中? – orim