Apache VirtualHosts - 从域重定向中排除多个文件和文件夹

时间:2014-01-09 18:07:27

标签: apache .htaccess mod-rewrite virtualhost vhosts

使用此代码:

RedirectMatch 301 ^((?!.*?excluded_file\.php).*)$ http://newdomain.com$1

...我正在将所有请求从olddomain.com重定向到我的Apache服务器到newdomain.com,除了一个名为excluded_file.php的文件。但实际上我需要排除以“excluded_”(excluded_1.php,excluded_2.php,excluded_3.php)开头的所有请求的文件以及对“olddomainfiles”文件夹中的文件的任何请求。所以最终的结果是:

将重定向至newdomain.com/whatevertherequestwasfor:

http://olddomain.com/somerandomfile.php
http://olddomain.com/otherfolders/whateverfile.php
http://olddomain.com/nice_URL_without_file_extension_or_slash

不会重定向:

http://olddomain.com/olddomainfiles/anyfile.php
http://olddomain.com/exclude_1.php
http://olddomain.com/exclude_2.php
http://olddomain.com/exclude_3.php

为什么我需要这个:我刚刚将我的应用程序提交给Apple,并在最后一刻决定我需要更改域名,这打破了应用程序的一个功能,因为它明确依赖于查看旧域名 - 它由于对我的虚拟主机文件所做的更改,它不再看到它了。我几天前发布了这个问题,但我错了我需要的东西......

1 个答案:

答案 0 :(得分:1)

这不会起作用吗?

RedirectMatch 301 ^((?!.*?(excluded.*\.php|olddomainfiles)).*)$ http://newdomain.com$1

只需更改前面的负面展示(之前正在寻找excluded_file\.php),就可以选择excluded.*\.phpolddomainfiles