То есть есть только два варианта, "lang1" и "lang2"?Затем просто создайте два отдельных правила:
RewriteEngine on
RewriteRule ^/?page/lang2/(\d+)/(.*)\.html$ /en/$2.$1 [END]
RewriteRule ^/?page/lang1/(\d+)/(.*)\.html$ /xx/$2.$1 [END]
Примечание: «xx», очевидно, подразумевается как заполнитель, вы не указали, что вы подразумеваете под «другим кодом».
В случае, если вы получили внутреннюю ошибку сервера (http статус 500), используя вышеприведенное правило, есть вероятность, что вы используете очень старую версию сервера apache http.В этом случае вы увидите определенный намек на неподдерживаемый флаг [END]
в файле журнала ошибок http-серверов.Вы можете попробовать обновить или использовать более старый флаг [L]
, он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.
Эта реализация также будет работать в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл ".htaccess").Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http.Если вы используете динамический файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация была включена вообще в конфигурации хоста и чтобы он находился в папке DOCUMENT_ROOT
хоста.
И общее замечание: вам всегда следует размещать такие правила в конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess").Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера.Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).