2009-08-07 2 views
4

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

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 для каждого поддомена и установить его.

ответ

4

падение это в .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, что может привести к бесконечной переадресации, если Destina сам URL включает www и будет пытаться перенаправить также этот поддомен.

+0

Не уверен, что это именно то, к чему я стремился, мне нужно сделать что-то более сложное. Будет ли это работать? RewriteRule^(. *) $ Http: //$1.example.com/$2 http://www.example.com/blogs/$1/$2 [R = 301] Это структура того, что мне нужно. делать. Но будет ли этот синтакс работать? – bflora2

+0

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

+0

Это создало цикл переадресации. Вот что появляется в адресной строке, когда я вставляю эти две строки в ваш пример в свой файл htaccess. http://www.example.com/blogs/www?q=blogs/www&q=blogs/www&q=blogs/www&q=blogs/www&q=blogs/www&q=blogs/www&q=blogs/www&q=blogs/www&q= блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/www & q = блоги/строка Мне бы хотелось скажем, http://www.example.com/blogs/string – bflora2