2010-04-27 2 views
0

Я пытаюсь выполнить переписывание 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

ответ

0

Правило переписывают как следующий должен делать эту работу. В Perl синтаксисе, предполагая, что $ Обл содержит http://domain.com/name/a/js/file.js

$str =~ s/\/a\//\// 

Экстраполируя регулярных выражений синтаксиса данной для частично работающих регулярных выражений, в Lighthttpd это должно отображаться

"https://stackoverflow.com/a/"=>"/" 

Что это делает, ищет «/ a/"и заменяет это на"/". Применяя это к вашему примеру (http://domain.com/name/a/js/file.js) дает http://domain.com/name/js/file.js

+0

Я думаю, что если я могу сделать регулярное выражение, где я сопоставляю целую строку, если она имеет/в ней, которая должна работать. Таким образом, мое правило будет выглядеть следующим образом: "^/name/a/(match/here)" => "/ name/$ 1" Я не уверен, как сопоставить всю строку ввода. – Ronald

+0

Написание регулярного выражения, которое соответствует/легко писать, но из вашего вопроса кажется, что вы хотите переписать строку двумя разными способами. Регулярное выражение, которое я дал вам, решает второй тип перезаписи. Также, глядя на ваше частично работающее регулярное выражение, вы уверены, что регулярное выражение ^/name/a/([^ /] +) => "/ name/a.php? Pid = $ 1 переписывает http: // domain. com/name/a/123. Регулярное выражение будет пытаться совместить/name/.. в начале строки.Я думаю, вам нужно удалить caret (^). – Jasmeet

+0

Вы ищете одно регулярное выражение для повторного переписывания Если это невозможно, в первом случае вы хотите преобразовать имя/a/123 в name/a.php? Pid = $ 1. $ 1 будет захватывать подстроку, соответствующую регулярному выражению в скобках. содержат текст a.php? pid, поэтому вы никогда не сможете его захватить из исходной строки – Jasmeet

Смежные вопросы