【问题标题】:Excluding Maintenance Page in specific directory排除特定目录中的维护页面
【发布时间】:2017-01-02 10:59:19
【问题描述】:

目前我在我的 .htaccess 文件中使用此代码来触发我的站点的维护页面。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [R=503,L]
ErrorDocument 503 /maintenance.html
Header Set Cache-Control "max-age=0, no-store"
</IfModule>

如果我的朋友希望访问它,我将如何做到这一点,以便我仍然可以访问我正在处理的目录,而不仅仅是我的 IP 地址。

我已经做了一些搜索,但目前还没有找到任何东西

干杯

汤姆

【问题讨论】:

  • 好的,听起来是个不错的计划。去吧! (或者你有什么问题吗?
  • @arkascha 是的,如果你读到了,我说过我想做它,这样我就可以在维护页面启动时访问它
  • 你写的。但那是 1. 不是一个问题,而是一个陈述和 2. 这不适合在这里作为一个问题。为此,您需要展示自己解决任务的尝试,而不仅仅是问:“为我做那件事”。你看我们不是免费的编码服务。您应该能够自己使用您的工具。只有当您因自己的尝试而陷入困境时,才可以在这里提出具体问题。如果您无法或只是懒得开始自己,那么我建议您聘请有偿程序员为您完成工作。
  • @arkascha 我很欣赏您的评论,并将修改问题的编写方式,但我一直在寻找解决方案,但没有找到任何东西。
  • 请添加您自己的尝试并指出究竟是什么不适合它。

标签: .htaccess maintenance-mode


【解决方案1】:

我想说你可以在处理维护模式之前简单地实现一些异常规则:

<IfModule mod_rewrite.c>
RewriteEngine On

# immediately end all rewriting for specific IPV4 addresses
RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.123$ [OR]
RewriteCond %{REMOTE_ADDR} ^321\.321\.321\.321$
RewriteRule ^ - [END]

# for everyone else: check for maintenance mode
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [R=503,L]
ErrorDocument 503 /maintenance.html
Header Set Cache-Control "max-age=0, no-store"
</IfModule>

或者,您可以将否定条件作为附加条件添加到维护模式重写逻辑中。但我认为以上内容更易于阅读和维护。

【讨论】:

  • 不幸的是,由于某种原因,在使用您给我的代码时会出现内部错误 500
  • 您在 http 服务器错误日志文件中得到的确切错误消息是什么?
  • 查看后,日志文件中没有最近的错误
  • http 状态 500 肯定会在错误日志文件中创建一个条目,除非您明确禁用日志记录。
  • 啊,可能是您使用的是不知道[END] 标志的真正旧版本的apache http 服务器。在这种情况下,只需将其替换为 [L]
猜你喜欢
  • 2015-12-06
  • 2021-03-20
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2016-08-15
  • 1970-01-01
相关资源
最近更新 更多