单个重写符合2种不同的情况

时间:2014-08-20 03:50:56

标签: regex apache .htaccess mod-rewrite apache2

我有2个以下的网址重定向,

example.host.com/index.php
host.com/example/index.php

当服务器处于维护状态时,我想将它们重定向到:

example.host.com/maintenance.php
host.com/example/maintenance.php

在.htaccess的帮助下

我知道如何分别实现它们,但现在我想要一个单一的编剧为我做这个工作。

以下是我在.htaccess中写的内容,但没有按预期工作。

Options FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteRule (.*?)/([^/]+)/?$ $1/maintenance.php [R=307,L]

任何帮助或想法为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

您可以使用此单一规则:

Options FollowSymlinks
RewriteEngine on

# generate dynamic rewrite base var
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

RewriteRule !maintenance\.php$ %{ENV:BASE}maintenance.php [R=307,L,NC]