Перенаправление htaccess 301 для нескольких файлов - PullRequest
2 голосов
/ 30 августа 2009

Мне интересно, будут ли работать несколько записей на htaccess для перенаправлений 301.

Проблема, которую я вижу, состоит в том, что старые файлы сайта имеют расширение «html» и имеют разные имена, поэтому простое глобальное перенаправление не будет работать, для каждого имени файла должно быть одно правило.

Этот сайт получает 1000 посещений в день, поэтому необходимо соблюдать осторожность, чтобы не наказывать поисковую систему.

RewriteEngine On
RewriteBase /
RewriteRule ^file1\.html$ http://www.domain.com/file1.php [R=301,NC,L]
RewriteRule ^file2\.html$ http://www.domain.com/file2.php [R=301,NC,L]
RewriteRule ^file3\.html$ http://www.domain.com/file3.php [R=301,NC,L]
RewriteRule ^file4\.html$ http://www.domain.com/file4.php [R=301,NC,L]

Перезапись заголовка php не будет работать, так как старые файлы имеют тип html.

Ответы [ 3 ]

3 голосов
/ 30 августа 2009

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

В вашем случае, можно использовать только это:

RewriteRule ^(file1|file2|file3|file4)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]

Таким образом, вы указываете, что именно вы хотите переписать; но есть только 1 RewriteRule.

Или, немного более общий:

RewriteRule ^file([0-9]*)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L]

Что позволяет вам определить, что вы хотите переписать каждый файл XYZ.html, с XYZ числом. (Поскольку я использовал '*', это правило переписывания не учитывалось бы ни для одного числа; если вы хотите хотя бы одно число, вам следует использовать '+')

Вы также можете сделать что-то еще более общее - не уверен, что хотите этого, но что-то подобное может сделать:

RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]

Здесь вы перенаправляете все, что заканчивается на .html

1 голос
/ 30 августа 2009

Почему бы просто ...

RewriteRule ^file([0-9]+)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L]

Или, если вы хотите переписать все на старом сайте ...

RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]
0 голосов
/ 30 августа 2009

Может быть, вы можете попробовать директиву RewriteMap

...