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

На моем веб-сайте есть несколько страниц, на которые можно перейти по двум ссылкам:

  • ... / страница
  • ... / параметр / страница

Чтобы оптимизировать веб-сайт для поисковых систем, я должен перенаправить все URL-адреса... / страницы на... / параметр / URL-адреса страницы.

Как я могу добраться до этого, изменив файл.htaccess?

1 ответ

Решение

Чтобы перенаправление выполнялось с желаемым поведением, реализуйте правило перезаписи, подобное приведенному ниже:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/(special|cases|which|should|be|excluded)/) [NC]
RewriteRule /(.*) http://www.example.com/parameter/$1 [L,R=301]

Решение более конкретной проблемы, упомянутой в комментариях (т. Е. Перенаправление всех страниц, у которых нет определенного контекста, для использования контекста 'en'), будет выглядеть примерно так:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/(en|it|de|fr)/) [NC]
RewriteRule /(.*) http://www.example.com/en/$1 [L,R=301]

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

Кроме того, после того, как это будет сделано, на Apache необходимо будет выполнить изящество, чтобы забрать изменения.

Другие вопросы по тегам