Apache перенаправить регулярное выражение: сопоставить что-то, что не следует за чем-то - PullRequest
3 голосов
/ 16 августа 2011

Какое регулярное выражение должно означать «все, что не следует« index.php », должно указывать на« index.php / $ 1 »»?

Например, «http://mysite/moo" должно указывать на» http://index.php/moo" while "http://index.php/moo" не должно.

В настоящее время я использую регулярное выражение PCRE (документы Apache говорят, что здесь должен использоваться PCRE), не получая эффекта: RedirectMatch (?<=index\.php)(\/.+) /index.php/$1.

Что такоеПравильно?

UPD: смысл в том, чтобы использовать только mod_alias, пропуск mod_rewrite

Ответы [ 3 ]

3 голосов
/ 16 августа 2011

Вы можете использовать RedirectCond с несоответствующим шаблоном (префикс "!").Попробуйте:

RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule (.*) index.php/$1

Или:

RewriteCond $1 !^/?index.php
RewriteRule (.*) index.php/$1
2 голосов
/ 16 августа 2011

Может быть:

^/?(?!index\.php)(.+)

т.е. негативный взгляд

0 голосов
/ 05 июня 2014

Я только пробовал с простым перенаправлением на статический сайт (работает):

RedirectMatch   ^(?!/index\.htm$).*$    /index.htm

Исходя из этого, вам может помочь следующее (сам не пробовал):

RedirectMatch   ^(?!/index\.php$)(.*)$    /index.php$1

См. Также: Овладение умением смотреть вперед и смотреть вперед

...