.htaccess 规则在用户使用站点时使站点脱机

Posted

技术标签:

【中文标题】.htaccess 规则在用户使用站点时使站点脱机【英文标题】:.htaccess rules to put a site offline while users are using it 【发布时间】:2014-07-27 18:13:48 【问题描述】:

我正在编写一个 .htaccess,以便能够软更新我的网站,防止新用户访问它,并且已经连接的用户被软重定向,考虑到有一些图像翻转、css 样式和进程中的异步 PHP 和 js 调用可以在显示的页面内调用,而无需从网站重新加载新页面

只是将任何内容重定向到 update.php 页面会对包含此类内容的页面产生一些不良影响。

因此,我一直在努力寻找正确的规则集来放入我的 .htaccess 以实现以下目标。你能帮帮我吗?

如果调用了 specialpage.php(即使有参数) 重定向到 specialpage_redirected.php

如果调用了 specialpage2.php(即使有参数) 重定向到 specialpage2_redirected.php

如果调用了任何其他 php 文件(即使带有参数) 重定向到redirected.php

如果调用了 specialscript.js 重定向到 specialscript_redirected.js

如果调用了任何其他 .js 重定向到redirected.js

并允许访问所有其他文件(css、图像、...)

...或者,如果您有更好的解决方案来实现此目标,将网站离线进行维护,同时考虑之前的限制(动态页面上已经连接的用户)。

【问题讨论】:

RewriteRule (specialpage)\.(php|js)$ $1_redirect.$2 【参考方案1】:

将这些规则放在您的 DOCUMENT_ROOT/.htaccess 文件中:

RewriteEngine On
RewriteBase /

RewriteRule ^(specialpage2?)\.php$ $1_redirected.php [L,NC]

RewriteCond %REQUEST_URI !^/specialpage [NC]
RewriteRule \.php$ redirected.php [L,NC]

RewriteRule ^(specialscript)\.js$ $1_redirected.js [L,NC]

RewriteCond %REQUEST_URI !^/specialscript [NC]
RewriteRule \.js$ redirected.js [L,NC]

【讨论】:

谢谢,我试试这个。这些语句是否考虑了可能的 php 页面参数,例如 page.php?i=1&b=test ? “php”之后的 $ 让我觉得他们没有。 是的,参数将按原样重写。查询字符串在RewriteRule 中不匹配,因此$ 的存在仅与/page.php 匹配。查询字符串会自动传递给目标 URI。

以上是关于.htaccess 规则在用户使用站点时使站点脱机的主要内容,如果未能解决你的问题,请参考以下文章

重写“站点关闭”页面的规则

重定向但需要弄清楚在多站点 wordpress 结构中忽略 .htaccess 中的目录

Nginx 中的多站点 WordPress 重写规则

Magento 站点切换.htaccess

将Drupal站点设置为脱机

使用 htaccess 重定向整个站点