Как настроить Apache mod_rewrite для перенаправления всех, кроме одной подпапки - PullRequest
2 голосов
/ 17 мая 2011

Я только что создал новый веб-сайт и готов перейти с моего текущего веб-сервера на новый веб-сервер.

Текущий веб-сервер будет переименован в 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.Я хотел бы, чтобы пользователи, запрашивающие:

www2.mydomain.com / archive / Important-page1.html для просмотра страницы на www2 и , а не , были перенаправлены.использовать mod_rewrite или mod_redirect?И могу ли я установить это в httpd.conf?

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Да, вам понадобится mod_rewrite.Попробуйте:

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

Примечание: 301 в R=301 является постоянным перенаправлением , вам нужно изменить его на 302, если вы хотите, чтобы он был временным.

1 голос
/ 17 мая 2011

В конфигурации VirtualHost в httpd.conf (или httpd.conf.d файле) для www2.mydomain.com добавьте:

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