Моє питання просте, але я не можузнайти відповідь. Зараз я працюю над переписуванням 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.