2015-06-16 4 views
0

Я искал похожие вопросы, но ни одна из них не применима к моей ситуации.htaccess перенаправляет на субдомен по строке запроса

Что мне нужно сделать, это перенаправить из старых URL, которые имеют определенную строку запроса: option=com_virtuemart субдомена: http://parts.domain.com

Пробовал кучу правил и conds, но не достигли правильного перенаправления. Он всегда был перенаправление меня http://parts.domain.com/index.php?option=com_virtuemart

Некоторые из правил, которые я пробовал:

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC] 
RewriteRule (.*) http://parts.domain.com/$1 [R=301,L] 

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC] 
RewriteRule http://parts.domain.com/? [L,NC,R=301] 

И как 50 другие правила. Какие ошибки я здесь делаю?

+0

* "Он был всегда перенаправляет меня' http://parts.domain.com/index.php?option=com_virtuemart'"* Разве это не то, что вы хотели? ... – Anonymous

+0

Неа, какие Я хочу, чтобы 'http: // parts.domain.com' остался без QS – Zota

ответ

0

Вам просто нужно совместить свои правила.

RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC] 
RewriteRule (.*) http://parts.domain.com/? [L,NC,R=301] 

Во втором примере вы не указали правильное выражение для соответствия.

+0

Спасибо за ответ, но опять же он странно перенаправляется на' http: //parts.domain.com/index.php? Option = com_virtuemart' – Zota

+0

@Zota В этом случае вам следует, вероятно, очистить кеш. Если в .htaccess нет других правил, это должно работать нормально. – Anonymous

+0

К сожалению, я постоянно очищал кеш под firefox, даже «жестко понятный», но почему-то не понял. После вашего предложения я попробовал его с IE, и ваши правила работали отлично! Благодарю. – Zota

1

Если вы используете корень parts.domain.com, вы можете сделать это в своем .htaccess.

Это работает для меня, вам не нужна группа захвата, которую вы можете использовать ^. Также убедитесь, что вы очистили кеш.

RewriteEngine On 
RewriteCond %{QUERY_STRING} (^|&)option=com_virtuemart(&|$) [NC] 
RewriteRule^http://parts.domain.com/? [L,NC,R=301] 

Или вы можете сделать что-то подобное.

RewriteEngine On 
RewriteCond %{THE_REQUEST} [A-Z]{3,}\ /+(index\.php)?\?option=com_virtuemart [NC] 
RewriteRule^http://parts.domain.com/? [R=301,L] 
+0

Спасибо за ответ. Нет, я нахожусь под 'http: // www.domain.com', это главный сайт, где мне нужно позаботиться о старых URL-адресах. – Zota

+0

Так вот ваш URL-адрес: http://www.domain.com/index. php? option = com_virtuemart' –

+0

Правила в порядке. Как я изначально сказал в своем ответе. Вы должны очистить свой кеш, поскольку правила действительно работают. –

Смежные вопросы