В 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
,