我试图做一个简单的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]
目标是将“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]