(LigHTTPd) Правила перезаписи RegExp - PullRequest
0 голосов
/ 23 марта 2009

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

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

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

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

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

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

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

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

Edit: С тех пор я дал им шанс:

"^/(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"

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

Ответы [ 2 ]

1 голос
/ 24 марта 2009

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

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

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

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

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

0 голосов
/ 23 марта 2009

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

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)
...