В Apache возможно ли обслуживать данные с одного URL при отображении отдельного URL в браузере?

У меня есть многоязычное веб-приложение, которое зависит от языкового кода в URL.

Пример:

example.com/zh-hans/title

Теперь клиент хочет новую структуру:

example.com/cn/title

Проблема в том, что приложение было построено с использованием zh-hans, Поскольку эта часть URL-адреса является аргументом, необходимым для правильной работы приложения, изменение его приведет к повреждению приложения. Кроме того, это невозможно изменить в приложении, чтобы приспособиться. Это займет 100 часов работы, чтобы отменить.

Возможно ли, чтобы браузер показывал один URL, а за кулисами данные поступали с другого URL и, таким образом, сохраняли функциональность?

Документация Apache гласит, что:

Предположим, что мы недавно переименовали страницу foo.html в bar.html и теперь хотим предоставить старый URL для обратной совместимости. Однако мы хотим, чтобы пользователи старого URL-адреса даже не распознавали, что страницы были переименованы, то есть мы не хотим, чтобы адрес изменялся в их браузере.

https://httpd.apache.org/docs/2.4/rewrite/remapping.html (от старого к новому (внутреннему))

Тогда будет ли решение этой проблемы столь же простым, как это?

RewriteEngine  on
RewriteRule    "^/zh-hans/(.+)"  "/cn/$" [PT]

1 ответ

RewriteEngine  on
RewriteRule    "^/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,

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