(LighHTTPd) Правила перезаписи регулярных выражений

Я пишу некоторые из своих собственных правил для нескольких сценариев PHP, которые я пишу, хотя у меня мало опыта работы с регулярными выражениями. Примечание: мало.

По сути, я хочу передать все URL-адреса, кроме нескольких, в качестве аргументов для index.php, переписав большинство URL-адресов, определенных как слаги в базе данных.

то есть: /admin, /config, /images, /lib и /template существуют, но я не хочу, чтобы их переписывали. Но все остальное я хочу передать в качестве аргументов в index.php.

Я делаю это в настоящее время с:

url.rewrite-once = (
    "^/(.*)$" => "/index.php?$1"
)

Что прекрасно работает с слагами базы данных, однако также перенаправляет папки, перечисленные выше. Они содержат файлы, к которым необходимо получить прямой доступ, но я не могу нигде найти описание того, как исключить строки из совпадения.

Как только я узнаю, как это сделать, я смогу понять и остальное, но будучи новичком в регулярном выражении, я не знаю, с чего начать.

Любая помощь будет принята с благодарностью.

Редактировать: с тех пор я попробовал:

"^/(index\.php|admin|config|images|lib|template)" => "$0",

Для чего FF сообщает о бесконечном перенаправлении для тех папок;

"^/(?!(admin|config|images|lib|template))(.*)$" => "$0"

Не соответствует всему, кроме папок;

"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1"

Опять же, ничего не переписывает;

"^/(.*)$" => "/index.php?$1"

Переписывает все, включая папки, которые я не хочу переписывать.


person ctrl_freak    schedule 23.03.2009    source источник


Ответы (2)


Кажется, я достиг того, что искал, со следующим выражением:

"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0"

я тогда просто

trim( $_SERVER['argv'] ,"/")

в index.php, чтобы получить слаг.

person ctrl_freak    schedule 24.03.2009

Попробуй это:

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)
person Gumbo    schedule 23.03.2009
comment
К сожалению, нет, FF выдает мне бесконечную ошибку перенаправления, которую я также получил, когда попробовал простой: /template =› /template - person ctrl_freak; 23.03.2009