我正在尝试做一个简单的重定向到维护页面,但似乎 apache 不会让我这样做!
我有一个 3 版 wiki 的文件夹(每个都有特定的语言),所以我想将每个 wiki 流量重定向到他自己的维护页面。
这是我的 .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 已启用
- 我测试了我的正则表达式https://regex101.com/r/jN2kA7/1
- RewriteRule ^.*$ maintenance.htm [R=302,L] 奇怪地重定向到http://myserver/var/www/wiki/maintenance.htm
目标是将“myserver/wiki/ANYTHING”重定向到“myserver/wiki/maintenance.htm”
如果有人能告诉我我做错了什么,那就太好了
谢谢
编辑:
经过更多测试,似乎我正在寻找类似的东西
RewriteRule "(.*)" "??PROTOCOL??://%{HTTP_HOST}/??SITEFOLD??/maintenance.htm" [R=302,L]
这似乎有效:
您的版本还允许 / 与 .* 匹配(因为 Apache 是贪婪的正则表达式),并且在括号中包含 / 意味着它是重复的。所以在你的例子下:
将重定向到此(使用 test1 和双 /):
而在我的示例中,这将重定向到:
我认为这是你想要的。
然而,即使我上面的解决方案应该可以工作,有时为了你自己的理智而简化它并只拥有其中三个可能会更好。虽然它有点重复并且不可扩展,但如果您仅限于三个,那么有时清晰胜于聪明。例如,如果您在 /en/wiki、/es/wiki 和 /de/wiki 分别有一个英文 wiki、一个西班牙文 Wiki 和一个德文 wiki,那么下面的操作可能会更简单。