Массовое перенаправление 301 с использованием .htaccess - PullRequest
5 голосов
/ 27 июля 2010

Я работаю над большим проектом, который включает в себя тысячи (более 30 000) статических веб-страниц и превращение их в CMS.

Проблема в том, что многие из этих страниц являются дубликатами в своих каталогах. Я хочу сохранить SEO в целости, используя перенаправления 301, однако я не уверен, что делать с таким большим перенаправлением (301).

Вот пример текущей структуры каталогов для страниц.

/page.html
/folder/page.html
/folder/subfolder/page.html
/folder/subfolder/anotherfolder/page.html

Как видите, page.html дублируется во всех каталогах.

Для новой CMS URL этой страницы будет просто /page.html.

Ответы [ 2 ]

6 голосов
/ 27 июля 2010

Рабочий пример, посещение: http://www.jakeisonline.com/stackoverflow/3345518-mass-301-redirect/page.html

Вы должны быть перенаправлены прямо на /page.html

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^(.*)page.html /page.html [R=301,NC]

Это всегда будет перенаправлять http://www.foo.com/something/something/something/page.html назадна http://www.foo.com/page.html с использованием жесткого перенаправления 301.

Правило перезаписи делает это, просматривая URL-адрес, определяя, включено ли что-либо перед page.html (исключая сам домен), и если оно есть,301 будет перенаправлять.Таким образом, вы можете буквально использовать любой подуровень, и до тех пор, пока он заканчивается page.html, он будет перенаправлен на /page.html в корневом каталоге.

На случай, если вам интересно, что [R=301,NC]значит,

 R // means simple redirect
 R=301 // means redirect with a 301 header
 NC // means no-case, or case insensitive
 L // can also be used to say 'ignore all the other rules after this'
0 голосов
/ 27 июля 2010

Попробуйте это правило:

RewriteRule ^([^/]+/)+page\.html$ /page.html [L,R=301]

Или для любого произвольного page.html :

RewriteRule ^([^/]+/)+([^/]+)\.html$ /$2.html [L,R=301]
...