使用.htaccessredirect到维护文件

我试图做一个简单的redirect到维护页面,但似乎像Apache不会让我这样做!

我有一个维基的3个版本的文件夹(每个都有一个特定的语言),所以我想redirect每个维基交通到他自己的维护页面。

这里是我的.htaccess

#Redirect trafic to maintenance page RewriteEngine On RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "(.*\/wiki.*\/).*" "$1/maintenance.htm" [R=302,L] 
  • mod_rewrite已启用
  • AllowOverride All已启用
  • 我testing了我的正则expression式https://regex101.com/r/jN2kA7/1
  • RewriteRule ^。* $ maintenance.htm [R = 302,L]奇怪地redirect到http://myserver/var/www/wiki/maintenance.htm

目标是将“myserver / wiki / ANYTHING”redirect到“myserver / wiki / maintenance.htm”

如果有人能告诉我我做错了什么,这将是很好的

谢谢

编辑:

经过一些更多的testing,似乎我正在寻找类似的东西

 RewriteRule "(.*)" "??PROTOCOL??://%{HTTP_HOST}/??SITEFOLD??/maintenance.htm" [R=302,L] 

这似乎工作:

 #Redirect trafic to maintenance page RewriteEngine On RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "(.*\/wiki)\/.*" "$1/maintenance.htm" [R=302,L] 

你的版本允许/也可以和。*匹配(因为Apache是​​贪婪的正则expression式),括号中的/也表示重复。 所以在你的例子中:

 myserver/wiki/test1/test2 

会redirect到这个(用test1和double /):

 myserver/wiki/test1//maintenance.htm 

而在我的例子中,这将redirect到:

 myserver/wiki/maintenance.htm 

我认为是你想要的。

但是,即使我上面的解决scheme应该工作,有时候为了您自己的理智,简化它可能会更好,只是有三个。 虽然这是一个重复,不可扩展,如果你只限于三个,那么有时清晰度比聪明好。 例如,如果您分别在/ en / wiki,/ es / wiki和/ de / wiki上分别拥有英文维基,西class牙维基和德文维基,则以下内容可能会更加简单。

 #Redirect trafic to maintenance page RewriteEngine On RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "/en/wiki/.*" "/en/wiki/maintenance.htm" [R=302,L] RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "/es/wiki/.*" "/es/wiki/maintenance.htm" [R=302,L] RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "/de/wiki/.*" "/de/wiki/maintenance.htm" [R=302,L]