如何设置Apache mod_rewrite来重定向除一个子文件夹之外的所有子文件夹

时间:2011-05-17 17:08:06

标签: mod-rewrite redirect webserver apache

我刚创建了一个新网站,并准备从我当前的网络服务器切换到新的网络服务器。

当前的网络服务器将重命名为www2 新的网络服务器将被称为www

我想将所有流量从www2重定向到www 之外的一个目录。我的目录结构如下所示:

 /var
     /www
         /html
            index.html
            page2.html
            /orange
                 index.html
            ...
            /archive
                 index.html
                 important-page1.html
                 important-page2.html
            /turquoise
                 index.html
            ...

我想将所有内容重定向到等效的www页面

 e.g. www2.mydomain.com/orange/index.html -> www.mydomain.com/orange/index.html
 www2.mydomain.com/turquoise/index.html -> www.mydomain.com/turquoise/index.html
/ archive文件夹的

EXCEPT 。我希望用户请求:

www2.mydomain.com/archive/important-page1.html查看www2上的页面,重定向。

我是否使用mod_rewrite或mod_redirect?我可以在httpd.conf中设置它吗?

由于

2 个答案:

答案 0 :(得分:4)

是的,你需要mod_rewrite。 尝试:

RewriteEngine on
RewriteCond $1 !^archive
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]

注意:R=301中的301是permanent redirect,如果您希望它是临时的,则需要将其更改为302。

答案 1 :(得分:1)

在http://www.dydo.com.com的httpd.conf(或VirtualHost文件)的httpd.conf.d配置中添加:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/archive.*
RewriteRule ^(.*)$ http://www.mydomain.com$1