使用维护页面重写Apache URL

使用维护页面重写Apache URL,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我不太习惯Apache重写模块,所以我需要一些帮助^^ 我目前有: 重新编写引擎打开 重写cond%{REQUEST_FILENAME}-F 重写规则!\。(js | ico | gif | jpe | g | png | css | html | xml)$index.php[QSA,L] 如果所有请求没有指向具有上面列出的扩展名的现有文件,它将所有请求重定向到index.php 现在,我想添加一条规则,上面写着: 如果文件maintenance.html存在于根目录下,则会针对任何请求重定

我不太习惯Apache重写模块,所以我需要一些帮助^^

我目前有:

重新编写引擎打开
重写cond%{REQUEST_FILENAME}-F
重写规则!\。(js | ico | gif | jpe | g | png | css | html | xml)$index.php[QSA,L]

如果所有请求没有指向具有上面列出的扩展名的现有文件,它将所有请求重定向到
index.php

现在,我想添加一条规则,上面写着:

  • 如果文件maintenance.html存在于根目录下,则会针对任何请求重定向到该文件
  • 否则,将请求发送到index.php(如果该文件是现有的且允许的文件,则返回该文件)

谢谢:)

我认为您只需在通常的重写之前添加例外:

RewriteEngine On

RewriteCond /maintenance.html -f
RewriteRule ^ maintenance.html [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpe?g|png|css|html|xml)$ index.php [QSA,L]

和一般性说明。您应该始终希望将这些规则放置在实际的http服务器主机配置中
.htaccess
风格的文件是出了名的容易出错的,很难调试,而且常常会无缘无故地降低服务器的运行速度。它们仅适用于您无权访问主机配置的情况(读:非常便宜的主机提供程序),或者应用程序需要编写自己的重写规则(无论如何,这是一场安全噩梦)

谢谢!我不知道htaccess文件的速度有多慢。无论如何,我无法访问服务器配置:速度减慢的原因很简单:服务器必须检查每个文件系统文件夹,直到请求引用的所有对象(包括文件!)中的这些文件,读取它们(一次又一次,因为它们可能已更改),解释它们并相应地采取行动。相比之下,在启动时,主机配置中放置的规则的单次传递看起来像是技术天堂……是的,但是。。。Apache不是在验证这些文件的存在吗?只有当它们被启用时(配置设置)。如果未启用,则根本不检查它们。
RewriteCond%{DOCUMENT\u ROOT}/maintenance.html-f
解决了此问题