2016-10-04 3 views
1

Я просто перешел на сайт WordPress. Раньше у меня был статический сайт и блог WordPress на субдомене (blog.example.com). Я использую приведенный ниже код, который полностью перенаправляет все мои сообщения в блоге на мой новый сайт. Есть ли способ сделать исключение для главной страницы блога? Чтобы быть конкретным, мне нужен код ниже, чтобы применить ко всем моим сообщениям, категориям и т. Д. (Это уже есть), но мне нужна моя старая домашняя страница блога (blog.example.com), чтобы 301 перенаправить на мою новую домашнюю страницу блога (example.com/blog). Чтобы быть предельно ясным, мои сообщения и т. Д. НЕ используют blog в постоянной ссылке..htaccess точное совпадение файла, а не точное соответствие

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^blog.example.com$ [NC] 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
</IfModule> 

ОБНОВЛЕНИЕ: Спасибо, Олаф! Получил это с вашим советом. Вот мой последний код для всех, кто ищет ответ.

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^blog.example.com$ [NC] 
RewriteRule ^$ http://www.example.com/blog [R=301,L] 
RewriteCond %{HTTP_HOST} ^blog.example.com$ [NC] 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
</IfModule> 
+0

Не забывайте избегать точек в регулярном выражении, чтобы соответствовать буквальной точке, а не любому символу. то есть. '^ Блог \ .example \ .com $'. Или используйте лексикографическое сравнение. например '= blog.example.com'. – MrWhite

ответ

1

Поместите наиболее конкретные правила в начале. В вашем случае, снабдите существующее правило с переадресацией на главной странице

RewriteCond %{HTTP_HOST} ^blog.example.com$ [NC] 
RewriteRule ^$ http://www.example.com/blog [R,L] 

Когда все работает, как должно, вы можете заменить R с R=301. Никогда тест с R=301.

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