/ / Шукаю допомогу для перезапису URL - regex, mod-rewrite, url-rewriting

Шукаєте деяку довідку щодо перезапису URL-адрес - regex, mod-rewrite, rewriting url

Моє питання просте, але я не можузнайти відповідь. Зараз я працюю над переписуванням URL-адрес для веб-сайту, але у мене виникла проблема.

RewriteRule ^([a-zA-Z]+)/(([a-zA-Z]+)/?$ index.php?mod=$1&com$2

Це працює в більшості випадків, і у мене є особливівипадки, коли це не застосовується, однак одна з сторінок повинна передавати багато інформації через URL-адресу, і я хочу автоматично переписати цю інформацію.

website.com/asdf/jkl/id/5/page/2 повинен стати website.com/index.php?mod=asdf&com=jkl&id=5&page=2

website.com/qwer/yuio/search/keyword/sort/alpha повинен стати website.com/index.php?mod=qwer&com=yuio&search=keyword&sort=alpha

Це можливо? Я дійсно можу скористатися тут ... Спасибі! :)

Відповіді:

3 для відповіді № 1

Залежно від того, яку мову / фреймворк ви використовуєте, може бути простіше помістити перезапис / відправлення в сценарії, а не спробувати зробити все в mod_rewrite.

Наприклад, якщо ви використовували PHP, вказавши URL-адресу:

http://www.example.com/asdf.php/jkl/id/5/page/2

скрипт в asf.php може прочитати змінну PATH_INFO, розділити його на косих рисок і записати значення в очікуване місце в $ _REQUEST.

Тоді все, що вам потрібно, це одне просте правило перезапису, щоб вилучити ".php".


0 для відповіді № 2

Можна використовувати рекурсивне правило:

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php?mod=$1&com$2 [L,QSA]
RewriteRule ^([^/]+/[^/]+)/([^/]+)/([^/]+)/?(.*) $1/$4?$2=$3 [QSA]

Але було б легше проаналізувати шлях запиту з PHP.