Перенаправление htaccess для поддоменов -> подкаталоги с одинаковыми именами? - PullRequest
4 голосов
/ 07 августа 2009

Я реструктурирую веб-сайт с большим количеством контента, в настоящее время припаркованного по URL-адресам, которые выглядят следующим образом.

http://string.domain.com/year/month/dd/string-pulled-from-title

По разным причинам я хотел бы размещать все новое содержимое по URL-адресам, которые выглядят следующим образом

http://www.domain.com/blogs/string/year/month/dd/string-pulled-from-title

Я бы хотел внести изменения в будущий контент, но не хочу, чтобы все старые вещи уходили 404.

Я полагаю, что правило перенаправления 301 в моем htaccess поможет, отправляя весь упомянутый трафик, приходящий через старые ссылки на новые форматы.

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

Обратите внимание, я не хочу делать это для всех поддоменов, только для 10 конкретных. Так что, если кто-то может помочь мне разобраться с одним из них, тогда я могу скопировать и вставить его 10 раз в моем htaccess для каждого субдомена и установить.

1 Ответ

4 голосов
/ 07 августа 2009

Перетащите это в .htaccess файл старого сайта (настраивая домен на свой фактический):

RewriteEngine On
RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [R=301]

Эта часть URL будет перенаправлена ​​на старый сайт:

year/month/dd/string-pulled-from-title

и перенаправьте его на новый сайт под новым местоположением:

blogs/string/year/month/dd/string-pulled-from-title

В качестве альтернативы, если вы хотите что-то более переменное, без необходимости индивидуального исправления каждого .htaccess, поместите это вместо этого в файл для каждого субдомена:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteRule ^(.*)$ http://example.com/blogs/%1/$1 [R=301,L]

Если вы перенаправляете на тот же домен, и он включает www , настройте правила перезаписи следующим образом:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteCond %{HTTP_HOST} !^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/blogs/%1/$1 [R=301,L]

Обратите внимание на второй RewriteCond, который проверяет, чтобы запрошенный URL не включал начального www, что может привести к бесконечному перенаправлению, если сам целевой URL включает www попытался бы также перенаправить этот поддомен.

...