Перенаправить указанный, но подстановочный символ * URL (с папками) в новый домен (та же структура)

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

domainA.com/company/careers*

domainB.com/company/careers*

Причина этого заключается в том, что сторонний поставщик предоставляет приложение iframe на основе jquery, которое выполняет проверку реферера перед загрузкой.

Я понимаю, что существует более серьезная проблема SEO / дублированного контента, которую необходимо решить, но предстоит выполнить еще много дополнительной работы, прежде чем domainA.com будет полностью перенаправлен на domainB.com, так что пока это только "карьера" раздел.

Сайт использует IIS6 с ISAP ReWrite3 от HeliconTech

http://www.helicontech.com/isapi_rewrite/doc/introduct.htm

Текущие правила:

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.59

<VirtualHost www.domainA.com www.domainB.com> 

RewriteEngine On 

#RewriteBase /
#RewriteRule ^pubs/(.+)\.pdf$ /404/?pub=$1.pdf [NC,R=301,L]

# Send away some bots
RewriteCond %{HTTP:User-Agent} (?:YodaoBot|Yeti|ZmEu|Morfeus\Fucking\Scanner) [NC] 
RewriteRule .? - [F]

# Ignore dirctories from FarCry Friendly URL processing
RewriteCond %{REQUEST_URI} !(^/measureone|^/blog|^/demo|^/_dev)($|/) 
RewriteRule ^([a-zA-Z0-9\/\-\%:\[\]\{\}\|\;\<\>\?\,\*\!\@\#\$\ \(\)\^_`~]*)$ /index.cfm?furl=$1 [L,PT,QSA] 

RewriteCond %{REQUEST_URI} ^/company/careers [NC]
RewriteRule ^company/careers/?(.*)$ http://www.domainname.com/company/careers/$1 [R=301,L]

# Allow CFFileServlet requests
RewriteCond %{REQUEST_URI} !(?i)^[\\/]CFFileServlet


RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /blog/index.php [L]

</VirtualHost> 

<VirtualHost blog.domainA.com> 

RewriteEngine On 

#redirect old blog.domainA.com/* posts to www.domainB.com/blog/*
RewriteCond %{HTTP_HOST} ^blog.domainA\.com [nc]
RewriteRule (.*) http://www.domainB.com/blog$1 [R=301,L]


</VirtualHost> 

2 ответа

Решение

Кажется, что строка "RewriteBase / blog /" нарушает ваше правило "карьеры", поскольку подразумевает, что запрос должен быть domainA.com/blog/company/careers*

Пожалуйста, подумайте, как это:

<VirtualHost www.domainA.com www.domainB.com> 

RewriteEngine On 
RewriteBase /
#RewriteRule ^pubs/(.+)\.pdf$ /404/?pub=$1.pdf [NC,R=301,L]

# Send away some bots
RewriteCond %{HTTP:User-Agent} (?:YodaoBot|Yeti|ZmEu|Morfeus\Fucking\Scanner) [NC] 
RewriteRule .? - [F]

# Ignore dirctories from FarCry Friendly URL processing
RewriteCond %{REQUEST_URI} !(^/measureone|^/blog|^/demo|^/_dev)($|/) 
RewriteRule ^([a-zA-Z0-9\/\-\%:\[\]\{\}\|\;\<\>\?\,\*\!\@\#\$\ \(\)\^_`~]*)$ /index.cfm?furl=$1 [L,PT,QSA] 

RewriteCond %{REQUEST_URI} ^/company/careers [NC]
RewriteRule ^company/careers/?(.*)$ http://www.domainname.com/company/careers/$1 [R=301,L]

# Allow CFFileServlet requests
RewriteCond %{REQUEST_URI} !(?i)^[\\/]CFFileServlet

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/.* /blog/index.php [L]

</VirtualHost> 

Если у вас все еще есть проблемы, включите вход в httpd.conf, поставив

RewriteLogLevel 9

и проверьте, как ваш запрос обрабатывается в rewrite.log.

Просто проверьте, начинается ли запрос с /company/careers

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/company/careers [NC]
RwriteRule ^company/careers/?(.*)$ http://domainB.com/company/careers/$1 [R=301,L]

Посмотрите, работает ли это для вас.

Другие вопросы по тегам