Перенаправить один или несколько 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 необходимо будет выполнить изящество, чтобы забрать изменения.