使用维护页面重写Apache URL

时间:2016-10-05 14:40:33

标签: apache .htaccess mod-rewrite url-rewriting

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

我目前有这个:

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

如果所有请求未指向具有上述扩展名的现有文件,则会将所有请求重定向到index.php

现在,我想添加一条规则:

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

谢谢:)

1 个答案:

答案 0 :(得分:1)

我说你只需要在通常的重写之前添加例外:

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样式文件非常容易出错,很难调试,而且他们真的减慢了服务器的速度,往往没有理由。它们仅适用于可以访问主机配置的情况(读取:非常便宜的主机提供商)或者应用程序需要编写自己的重写规则(无论如何都是安全噩梦) 。