2015-08-12 5 views
2

Не могли бы вы взглянуть на приведенный ниже код и сказать, правильно ли это сделать.улучшение правила mod_rewrite

Для того, чтобы перенаправить из:

http://blog.exampledomain.com/2013/10/testpage.html 

в

https: //exampledomain.com/blog/testpage/ 

Я поставил следующие правила перезаписи в 2 файлах .htaccess:

  1. В файле .htaccess в корне exampledomain.com Я разместил:

    RewriteCond %{HTTP_HOST} ^blog\.exampledomain\.com$ [NC,OR] 
    RewriteCond %{HTTP_HOST} ^www\.blog\.exampledomain\.com$ [NC] 
    RewriteRule ^(.*)$ https://exampledomain.com/blog/$1 [R=301,L] 
    
  2. В файле .htaccess в папке блога в exampledomain.com/blog я поставил:

    RewriteRule ^([0-9]{4})/([0-9]{2})/(.*)\.html https://exampledomain.com/blog/$3/ [R=301,L] 
    

Вопросы:

  1. это правильный способ сделать это?

  2. Означает ли это, что у нас есть 2 переадресации? (что, вероятно, не очень хорошо для SEO). Должны ли они быть объединены? Как?

+0

ли ваш _subdomain_ 'blog.' указывают на тот же корень документа как ваш основной домен? – MrWhite

+0

Да, субдомен раньше был блогом, который больше не используется и заменяется блогом в подпапке. Но в текущей настройке блог субдомена. имеет тот же корень. – Arman

ответ

1

Эти два переадресации должны быть объединены в один.

В файле .htaccess в корневом каталоге документа вашего поддомена (который выглядит так же, как и корень документа основного домена? Или в основных доменах .htaccess file - если это родительский каталог на файловая система), попробуйте следующее:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?blog\.exampledomain\.com$ 
RewriteRule ^\d{4}/\d\d/(.+)\.html$ https://exampledomain.com/blog/$1/ [R,L] 

Когда вы уверены, что это работает ОК, а затем изменить временный редирект (R) в постоянный (R=301).

UPDATE: Чтобы перенаправить от: http://blog.exampledomain.com/ до https://exampledomain.com/blog/ и http://blog.exampledomain.com/whatever к https://exampledomain.com/blog/whatever, добавьте следующие директивы после выше:

RewriteCond %{HTTP_HOST} ^(www\.)?blog\.exampledomain\.com$ 
RewriteRule ^(.*)$ https://exampledomain.com/blog/$1 [R,L] 
+0

Спасибо! Чтобы перенаправить версию https, также должен быть изменен код? другими словами, чтобы перейти от https://blog.exampledomain.com/2013/10/testpage.html к https: //exampledomain.com/blog/testpage/. – Arman

+0

Предоставляя вам обслуживание контента с того же места, вам нечего менять в отношении версии HTTPS. – MrWhite

+0

Спасибо! Но есть ли способ убедиться в том, что ниже тоже происходит: http: //blog.exampledomain.com/ https: //exampledomain.com/blog/ и http: //blog.exampledomain.com/whatever https://exampledomain.com/blog/whatever – Arman

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