Я пытаюсь выполнить переписывание URL с помощью Lighttpd. У меня есть то, что мне нужно частично работать. Сейчас у меня есть это: http://domain.com/name/a/123, который переписывает на http://domain.com/name/a.php?pid=123Переписывание файлов и каталогов Lighttpd
Я делаю это с этим переписывают однократно правило: "^/имя/а/([^ /] +)" => «/name/a.php ? pid = $ 1 "
Эта страница php имеет внешние ресурсы, которые не переписываются, такие как файлы JavaScript и CSS. Есть ли способ, которым я могу также переписать сделать следующее?
http://domain.com/name/a/js/file.js =>http://domain.com/name/js/file.js
Я думаю, что если я могу сделать регулярное выражение, где я сопоставляю целую строку, если она имеет/в ней, которая должна работать. Таким образом, мое правило будет выглядеть следующим образом: "^/name/a/(match/here)" => "/ name/$ 1" Я не уверен, как сопоставить всю строку ввода. – Ronald
Написание регулярного выражения, которое соответствует/легко писать, но из вашего вопроса кажется, что вы хотите переписать строку двумя разными способами. Регулярное выражение, которое я дал вам, решает второй тип перезаписи. Также, глядя на ваше частично работающее регулярное выражение, вы уверены, что регулярное выражение ^/name/a/([^ /] +) => "/ name/a.php? Pid = $ 1 переписывает http: // domain. com/name/a/123. Регулярное выражение будет пытаться совместить/name/.. в начале строки.Я думаю, вам нужно удалить caret (^). – Jasmeet
Вы ищете одно регулярное выражение для повторного переписывания Если это невозможно, в первом случае вы хотите преобразовать имя/a/123 в name/a.php? Pid = $ 1. $ 1 будет захватывать подстроку, соответствующую регулярному выражению в скобках. содержат текст a.php? pid, поэтому вы никогда не сможете его захватить из исходной строки – Jasmeet