2014-02-11 3 views
7

С htaccess мне нужно перенаправить все URL-адреса, которые не содержат определенный путь URL (healthcare), в новый домен, сохраняя исходный URL-адрес неповрежденным.htaccess перенаправляет, если URL-адрес не содержит определенного каталога

Пример:

healthcare.domain.com/anydirectory/anything.html

следует перенаправить на

staging.domain.com/anydirectory/anything.html

но любой URL содержащие/здравоохранение, не должны перенаправляться. Как и в healthcare.domain.com/industries/healthcare/customers.html, не следует перенаправлять.

Оба домена находятся на одном сервере, а healthcare.domain.com указана на тот же корень, что и staging.domain.com. Они хотели иметь доступ к следующей странице staging.domain.com/industries/healthcare/ в healthcare.domain.com. Я устанавливаю healthcare.domain.com в качестве нового субдомена, указывающего его корень на тот же корень, что и staging.domain.com. Затем я настраиваю перенаправление в htaccess для healthcare.domain.com для перенаправления на healthcare.domain.com/industries/healthcare, который отлично работает, но если вы нажмете где-нибудь еще на сайте за пределами/industries/healthcare/мне нужно принести пользователь обратно staging.domain.com/whatever

Вот то, что я до сих пор:

RewriteCond %{HTTP_HOST} ^healthcare\.domain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.healthcare\.domain\.com$ 
RewriteRule ^/?$ "http\:\/\/healthcare\.domain\.com\/industries\/healthcare\/" [R=301,L] 

RewriteCond %{HTTP_HOST} ^healthcare\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !/healthcare/ [NC] 
RewriteRule ^(.*)$ http://staging.domain.com/$1 [L,R=302] 

Но выше всегда возвращает http://staging.domain.com/index.php

+0

ли '' healthcare.domain.com' и staging.domain.com' на одном хосте и то же 'VirtualHost'? – anubhava

+0

Я добавил к вопросу выше, чтобы ответить на ваш вопрос. – OneSolutionStudio

+0

Является 'staging.domain.com/industries/healthcare /' так же, как 'healthcare.domain.com/industries/healthcare /'? – anubhava

ответ

9

Try:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^healthcare\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !/healthcare/ 
RewriteRule ^(.*)$ http://staging.domain.com/$1 [L,R] 
+0

У меня был тот, который был почти идентичен вашему, и он вернул те же результаты - он просто дал мне staging.domain.com/index.php. Я добавил больше информации на мой вопрос, который может пролить свет на то, почему. – OneSolutionStudio

1

Вы можете использовать этот код:

RewriteCond %{HTTP_HOST} ^(www\.)?healthcare\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !/healthcare/ [NC] 
RewriteRule ^(.*)$ http://staging.domain.com/$1 [L,R=302] 

RewriteCond %{HTTP_HOST} ^(www\.)?healthcare\.domain\.com$ [NC] 
RewriteRule ^/?$ http://healthcare.domain.com/industries/healthcare/ [R=302,L] 
Смежные вопросы