У меня есть многоязычное веб-приложение, которое зависит от языкового кода в URL-адресе. .
Пример:
example.com/zh-hans/title
Теперь клиенту нужна новая структура:
example.com/cn/title
Проблема в том, что приложение было построено на основе zh-hans
. Поскольку эта часть URL-адреса является аргументом, необходимым для правильной работы приложения, ее изменение приведет к поломке приложения. Кроме того, это невозможно изменить в приложении, чтобы приспособиться. Чтобы отменить это, потребуются сотни часов работы.
хотите предоставить старый URL для обратной совместимости. Однако мы
хотите, чтобы пользователи старого URL-адреса даже не распознали, что страницы были
переименованы - то есть мы не хотим, чтобы адрес изменился в их
браузер.
https://httpd.apache.org/docs/2.4/rewrite/remapping.html (От старого к новому (внутреннему))
Тогда решение этой проблемы было бы таким же простым как это?
RewriteEngine on
RewriteRule "^/zh-hans/(.+)" "/cn/$" [PT]
RewriteEngine on ПерезаписатьПоручень "^/zh-hans/(.+)" "/cn/$" [PT].
Если "клиент теперь хочет новую структуру: example.com/cn/title
" то ваша директива перезаписи должна быть наоборот? Например:
RewriteRule ^/cn/(.+) /zh-hans/$1 [PT]
Вам все еще нужно изменить видимую структуру URL в вашем приложении, чтобы показать example.com/cn/title
(в конце концов, клиент "хочет новую структуру"), которая затем будет внутренне переписана на example.com/zh-hans/title
, чтобы ваше базовое приложение могло ее понять.
Однако, это все еще зависит от того, будет ли ваше веб-приложение читать URL так, как оно задумывалось. Если, например, он смотрит на REQUEST_URI
(или эквивалент), то он все равно будет видеть example.com/cn/title
.