301 перенаправление .htaccess

Как выполнить 301 редирект, например: подкаталог /Blog/ на /blog/ с .htaccess?


person Wesley    schedule 27.10.2010    source источник


Ответы (3)


Redirect 301 /Blog /blog

Или используйте что-то вроде http://www.htaccessredirect.net/index.php

person Sam Plus Plus    schedule 27.10.2010

Сразу приходит в голову способ:

RewriteEngine on
RewriteBase /path/to/your/web/app
RewriteRule ^Blog$ blog [R=301,L]
RewriteRule ^Blog/(.*)$ blog/$1 [R=301,L]

Вероятно, есть намного лучшие способы, чем mod_rewrite, и я не уверен на 100%, что внешние перенаправления будут работать должным образом - вам может понадобиться полный URL-адрес - но готово.

person Andrew    schedule 27.10.2010

Это простейшее решение для .htaccess, поместите его в /.htaccess:

Redirect 301 /Blog /blog

Но это действительно ограничено. Если вы хотите поймать все возможные ошибки в написании CaSe, а также переслать любую другую информацию о пути (например, /Blog/foo/bar.html), используйте вместо этого:

RedirectMatch 301 ^/[Bb][Ll][Oo][Gg](?<!blog)(/.*)?$ /blog$1

Дополнительные параметры доступны в полных генераторах файлов .htaccess.

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

person Jay Dansand    schedule 27.10.2010
comment
Ваш второй пример также будет соответствовать /blog в любой позиции. - person Gumbo; 28.10.2010
comment
Очень правильно - я поспешил нажать на кнопку «Добавить ответ». Спасибо, что указали на это! REGEX теперь исправлен. - person Jay Dansand; 28.10.2010
comment
Да, действительно, этот вариант лучше, чем всегда знаменитый: некоторые люди, столкнувшись с проблемой, думают, что я знаю, что я буду использовать регулярные выражения. Теперь у них две проблемы. - person Necronet; 28.10.2010