php очистить URL-адреса с помощью регулярных выражений

я пытаюсь преобразовать эти URL-адреса

localhost/list/data/?search=keyword
localhost/list/data?search=keyword

to

localhost/list/data/search/keyword

я использовал это выражение

(.+)(\?|\/\?)([a-z0-9_-]+)=([a-z0-9_-]+)

проблема в том, что пользователь ищет другое ключевое слово

localhost/list/data/search/keyword/?search=anotherkeyword
localhost/list/data/search/keyword?search=anotherkeyword

становится вот так

localhost/list/data/search/keyword/search/anotherkeyword

как это сделать

localhost/list/data/search/anotherkeyword

где заменяет предыдущее поиск/ключевое слово в URL


person kapitanluffy    schedule 31.07.2012    source источник


Ответы (1)


Это немного сложнее, чем просто регулярное выражение. Лучший подход — это комбинация скриптов на стороне сервера и htaccess. Я написал ответ на очень похожий вопрос не так давно. А также использовать это решение в нескольких сайтах, которые я разрабатываю.

URL перезаписи динамической страницы БД PHP

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

person chris    schedule 31.07.2012