.htaccess добавить имя папки в конец URL - PullRequest
2 голосов
/ 15 января 2020

У нас есть многоязычный сайт с URL-адресами продуктов на английском языке sh, например:

example.com/en/product-name
example.com/en/product-name2

Названия продуктов могут содержать любой латинский символ, число и тире.

Из-за реструктуризация, ко всем URL-адресам Engli sh необходимо добавить -en, например:

example.com/en/product-name-en
example.com/en/product-name2-en

Может кто-нибудь помочь мне найти RewriteCond и RewriteRule для сопоставления любого URL-адреса с /en/ в нем и 301 перенаправить на тот же URL с добавлением -en в конце?

1 Ответ

0 голосов
/ 15 января 2020

Попробуйте что-то вроде следующего, используя mod_rewrite, в верхней части вашего .htaccess файла:

RewriteEnging On

# Append "-en" to URL if it starts "/en/."
RewriteCond %{REQUEST_URI} !-en$
RewriteRule ^en/[\w-]+$ %{REQUEST_URI}-en [R=301,L]

Желательно сначала протестировать с 302 (временным) перенаправлением, чтобы избежать проблем с кэшированием .

\w - это сокращенный класс символов, который соответствует a-z, A-Z, 0-9 и _ (подчеркивание), к которому мы добавляем - (дефис) к символу учебный класс. (Я предполагаю, что вы имеете в виду «дефис», когда вы указываете «тире» - хотя это строго разные символы.)

Предыдущее условие (директива RewriteCond) - избегать перенаправления URL, который уже заканчивается на -en. Префикс ! отменяет регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...