Вот конфиг Apache httpd, который должен работать:
RewriteEngine On
RewriteRule ^/outlook$ https://example.com/email.aspx [P,L]
RewriteRule ^/([^./])/?$ https://example.com/$1.aspx [P,L]
При этом используется обратный прокси-сервер для обслуживания таких страниц, как email.aspx
и foobar.aspx
, когда им предоставляются "outlook" и "foobar", не раскрывая их расширения пользователям.
Хотя, похоже, вы пытаетесь вернуться назад по какой-то причине. В этом случае вы бы хотели:
RewriteEngine On
RewriteRule ^/email\.aspx$ https://example.com/outlook [L]
RewriteRule ^/([^.]+)\.aspx$ https://example.com/$1 [L]
Regex условные выражения не может выполнить вашу задачу. Структура регулярного выражения:
(?(condition)yes-pattern|no-pattern)
condition
либо
- утверждение нулевой ширины (обычно заблаговременно)
- целое в скобках, обозначающее, имеет ли этот пронумерованный захват содержимое
- имя группы захвата в угловых скобках или одинарных кавычках
(R)
, что верно при оценке внутри рекурсии или eval
yes-pattern
- регулярное выражение для соответствия, если условие истинно
no-pattern
- необязательное регулярное выражение для сопоставления, если условие ложно
Следовательно, вы не можете вставить новый текст в совпадение с помощью условного выражения.