mod_rewrite: конвертировать «папки» в URL в параметры запроса - PullRequest
0 голосов
/ 18 марта 2009

Я хочу получить URL-адрес, например:

http://www.example.com/valOne/valTwo/valThree/valFour/valFive

и преобразовать его в:

http://www.example.com/index.php?one=valOne&two=valTwo&three=valThree&four=valFour&five=valFive

Мне действительно нужно всего несколько параметров запроса для моего приложения, чтобы регулярное выражение могло иметь эти пять жестко закодированных, но было бы неплохо, если бы оно могло динамически создавать новые параметры запроса, когда дополнительные URL-адреса добавляются в URL. Кроме того, не все пять папок или QP будут присутствовать всегда, поэтому он должен уметь обрабатывать это соответствующим образом.

1 Ответ

6 голосов
/ 18 марта 2009

Вот правило mod_rewrite, которое соответствует вашим потребностям:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?$ index.php?one=$1&two=$2&three=$3&four=$4&five=$5

Но было бы гораздо проще, если бы вместо этого вы анализировали запрошенный путь URI с помощью PHP:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php

$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));
var_dump($segments);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...