AliasMatch: совпадение для всех, кроме хэша

0

Apache2, Ubuntu,/etc/apache2/sites-available/default.conf

Только номер 1 должен быть псевдонимом, номер 2 - нет. Мне нужно регулярное выражение AliasMatch, которое опускает какой-либо URL-адрес с помощью ^/#, иначе передает $ 1 в новый /path/$ 1

  1. url.com/some_dir
  2. url.com/#/some_dir

Я пробовал следующие подходы: Первый переадресовывает как 1, так и 2, потому что (. *). Вторые не работают вообще. Третий тоже не работает, но я пытался сопоставить буквенно-цифровые символы, чтобы по умолчанию пропускать #, он также не работает.

AliasMatch "(?i)^/(.*)$" "/new/path/$1"
AliasMatch "(?i)^((?!#).)*$" "/new/path/$1"
AliasMatch "^/[a-zA-Z0-9_-]+$" "/new/path/$1"

Как я могу опустить URL-адрес 2, сохраняя при этом правильное присвоение URL-адреса 1?

Теги:
apache2
webserver

1 ответ

1
Лучший ответ

Попробуйте это регулярное выражение: ^[^#]+$

Или этот: ^.*?/[^#]+$

Они понятны.

Хотя я не уверен, что именно вы хотите захватить. Кажется, вы знаете, как использовать группы захвата, поэтому вы можете добавить некоторые. Или, если вы не знаете, хотите ли вы ВСЕ из регулярного выражения, вы можете использовать $0.

Редактировать:

Попробуйте: ^[^/]*/([^#]+)$

Этот будет отрубать все после последней косой черты: ^[^/]*/([^#]+)/[^#/]+$

И этот получает содержимое между первой и второй косой чертой: ^[^/]*/([^#/]+)/

  • 0
    Я понимаю большинство из этого; но по какой-то причине я просто не могу решить эту проблему. Я пытаюсь захватить все после косой черты в примере 1, если оно не начинается с #. Я попробовал различные формы вашего предложенного регулярного выражения, но безрезультатно. Я думаю, что это довольно близко ..
  • 0
    @MattBunch Я добавил еще один. Это должно быть лучше и быстрее, чем другие два, и это работает в моих тестах. (Я думаю, что ваш вкус регулярных выражений достаточно стандартный, чтобы работать с ним.)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню