Я веду блог WP с qtranslate. Это позволяет мне создавать сообщения на нескольких языках.
1 . Пример URL без qtranslate:
www.mysite.com/post1
2 . Пример URL с локализованным контентом:
www.mysite.com/en/post1 (английский — мой вариант по умолчанию и запасной вариант)
www.mysite.com/de/post1
К сожалению, поисковые системы и т. д. все еще помнят мои старые ссылки (1.), и они все еще доступны. Итак, «www.mysite.com/post1» теперь показывает мой английский контент без перенаправления. Но что он должен сделать, так это направить 301 пользователя на "www.mysite.com/en/post1".
Итак, теперь мне нужно правило, которое в основном проверяет, есть ли /en/post1 или /de/post1 в URL-адресе, и в противном случае перенаправляет на резервный / en/post1 URL. Есть одно исключение, потому что «/shop» — это реальный подкаталог, которому не нужно указывать информацию о языке.
-- ОБНОВИТЬ --
Я сделал это!!! Это было на самом деле весело, но мне потребовалось довольно много времени, чтобы понять.
RewriteRule ^$ en [R=301,L]
RewriteRule ^([a-z]{2})/{1}$ $1 [R=301,L]
RewriteRule ^([a-zA-Z0-9\-\_]{3,})(/|$)$ en/$1 [R=301,L]
Вероятно, есть лучшие способы сделать это, но это помогает. Спасибо всем за первоначальную помощь!