mod_rewrite для любого количества переменных - PullRequest
1 голос
/ 04 июня 2009

Я новичок в mod_rewrite, и мне было интересно, есть ли какой-нибудь способ, которым вы можете сделать сценарий перезаписи, который обрабатывает и количество переменных, которые вы к нему добавляете.

Пример:

www.krisnicolaou.com/index.php?id=5&sort=asc&limit=25&param=first_name

до

www.krisnicolaou.com/5/asc/25/first_name

... но вы также можете передать эти переменные на другой странице, и это будет работать с этим одним сценарием:

www.krisnicolaou.com/index.php?page=view&action=add

до

www.krisnicolaou.com/view/add/

По сути, я не хочу ограничиваться тем, сколько параметров я могу добавить в конец, и мне не нужно постоянно изменять файл .htaccess.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 июня 2009

Обычно нужно взять «чистые» URL-адреса и преобразовать их в параметры. То, что вы просите, является противоположностью. Вот проверенный набор правил.

RewriteEngine on

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} ^([^=]*)=([^&]*)(&.*)?
RewriteRule ^(.*/)?([^/]+) $1%2/$2?%3 [L]

Это будет выполнено, если есть параметры, и для каждого параметра он добавит его в URL и удалит его из списка параметров. [N] заставит его работать, пока не останется больше параметров.

Для проверки я создаю следующую структуру:

view
view/add
view/add/index.htm

Я поместил вышеуказанные правила в файл .htaccess.

Нормальный тест: http://www.theeggeadventure.com/2009/index.htm?page=view&action=add

Дополнительные параметры (404) тест http://www.theeggeadventure.com/2009/index.htm?page=view&action=add&foo=bar URL /2009/view/add/bar/index.htm не найден на этом сервере.

1 голос
/ 04 июня 2009

Что-то вроде это .

...